{
  "openapi": "3.0.3",
  "info": {
    "title": "PlatPhorm Jobs API",
    "description": "Canonical interview coordination, reference-team collaboration, prep-room, observation, debrief, calendar, kanban, invite-link, MCP, and human-centered job-search workflow layer. Public-safe reads are available by default. Protected mutations require PLATPHORM_API_KEY.",
    "version": "0.6.0",
    "contact": {
      "name": "PlatPhormNews",
      "url": "https://platphormnews.com"
    }
  },
  "servers": [
    {
      "url": "https://jobs.platphormnews.com",
      "description": "Production"
    }
  ],
  "paths": {
    "/api/health": {
      "get": {
        "operationId": "system_health_canonical_public_route_alias_",
        "summary": "System health (canonical public route alias)",
        "tags": [
          "System"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/api/v1/health": {
      "get": {
        "operationId": "versioned_system_health_canonical_public_route_alias_",
        "summary": "Versioned system health (canonical public route alias)",
        "tags": [
          "System"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/api/docs": {
      "get": {
        "operationId": "openapi_json_document_canonical_public_route_",
        "summary": "OpenAPI JSON document (canonical public route)",
        "tags": [
          "System"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/api/v1/interviews": {
      "get": {
        "operationId": "listInterviews",
        "summary": "Public-safe counts; protected requests also receive interview records",
        "tags": [
          "Interviews"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      },
      "post": {
        "operationId": "createInterview",
        "summary": "Create an interview in protected server storage",
        "tags": [
          "Interviews"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "401": {
            "description": "PLATPHORM_API_KEY required"
          }
        },
        "security": [
          {
            "PlatPhormApiKey": []
          },
          {
            "PlatPhormBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "company",
                  "role",
                  "date"
                ],
                "additionalProperties": true
              }
            }
          }
        }
      }
    },
    "/api/v1/interviews/{id}": {
      "get": {
        "operationId": "getInterview",
        "summary": "Read protected server-side interview detail",
        "tags": [
          "Interviews"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "401": {
            "description": "PLATPHORM_API_KEY required"
          }
        },
        "security": [
          {
            "PlatPhormApiKey": []
          },
          {
            "PlatPhormBearer": []
          }
        ]
      },
      "put": {
        "operationId": "updateInterview",
        "summary": "Update protected server-side interview detail",
        "tags": [
          "Interviews"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "401": {
            "description": "PLATPHORM_API_KEY required"
          }
        },
        "security": [
          {
            "PlatPhormApiKey": []
          },
          {
            "PlatPhormBearer": []
          }
        ]
      },
      "delete": {
        "operationId": "deleteInterview",
        "summary": "Delete protected server-side interview detail",
        "tags": [
          "Interviews"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "401": {
            "description": "PLATPHORM_API_KEY required"
          }
        },
        "security": [
          {
            "PlatPhormApiKey": []
          },
          {
            "PlatPhormBearer": []
          }
        ]
      }
    },
    "/api/v1/team": {
      "get": {
        "operationId": "listTeam",
        "summary": "Public-safe counts; protected requests also receive team records",
        "tags": [
          "Team"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      },
      "post": {
        "operationId": "addTeamMember",
        "summary": "Add a protected server-side team member",
        "tags": [
          "Team"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "401": {
            "description": "PLATPHORM_API_KEY required"
          }
        },
        "security": [
          {
            "PlatPhormApiKey": []
          },
          {
            "PlatPhormBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "name"
                ],
                "additionalProperties": true
              }
            }
          }
        }
      }
    },
    "/api/v1/interviews/{id}/invites": {
      "post": {
        "operationId": "generateInviteLink",
        "summary": "Generate a token-scoped invite link",
        "tags": [
          "Invites"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "401": {
            "description": "PLATPHORM_API_KEY required"
          }
        },
        "security": [
          {
            "PlatPhormApiKey": []
          },
          {
            "PlatPhormBearer": []
          }
        ]
      }
    },
    "/api/v1/invites/{token}": {
      "get": {
        "operationId": "getInvite",
        "summary": "Public-safe token-scoped invite preview",
        "tags": [
          "Invites"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/api/v1/invites/{token}/accept": {
      "post": {
        "operationId": "acceptInvite",
        "summary": "Accept a token-scoped team invite",
        "tags": [
          "Invites"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/api/v1/grok/parse-jd": {
      "post": {
        "operationId": "parseJobDescriptionWithGrok",
        "summary": "Parse a job description with xAI/Grok when configured",
        "tags": [
          "AI"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "401": {
            "description": "PLATPHORM_API_KEY required"
          }
        },
        "security": [
          {
            "PlatPhormApiKey": []
          },
          {
            "PlatPhormBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jobDescriptionText"
                ],
                "additionalProperties": true
              }
            }
          }
        }
      }
    },
    "/api/v1/jd/parse": {
      "post": {
        "operationId": "parseJobDescription",
        "summary": "Provider-neutral JD parse alias",
        "tags": [
          "AI"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "401": {
            "description": "PLATPHORM_API_KEY required"
          }
        },
        "security": [
          {
            "PlatPhormApiKey": []
          },
          {
            "PlatPhormBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "jobDescriptionText"
                ],
                "additionalProperties": true
              }
            }
          }
        }
      }
    },
    "/api/v1/network/calendar": {
      "get": {
        "operationId": "getCalendarStatus",
        "summary": "Public-safe Calendar integration status",
        "tags": [
          "Integrations"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      },
      "post": {
        "operationId": "createCalendarEvent",
        "summary": "Create or sync a Calendar interview event",
        "tags": [
          "Integrations"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "401": {
            "description": "PLATPHORM_API_KEY required"
          }
        },
        "security": [
          {
            "PlatPhormApiKey": []
          },
          {
            "PlatPhormBearer": []
          }
        ]
      }
    },
    "/api/v1/network/kanban": {
      "post": {
        "operationId": "createKanbanTask",
        "summary": "Create or sync a Kanban interview task",
        "tags": [
          "Integrations"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "401": {
            "description": "PLATPHORM_API_KEY required"
          }
        },
        "security": [
          {
            "PlatPhormApiKey": []
          },
          {
            "PlatPhormBearer": []
          }
        ]
      }
    },
    "/api/v1/network/mcp": {
      "get": {
        "operationId": "public_safe_mcp_hub_status",
        "summary": "Public-safe MCP hub status",
        "tags": [
          "System"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/api/v1/integrations/status": {
      "get": {
        "operationId": "public_safe_jobs_integration_status",
        "summary": "Public-safe Jobs integration status",
        "tags": [
          "System"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/api/events": {
      "get": {
        "operationId": "listEvents",
        "summary": "Public-safe event outbox summary",
        "tags": [
          "Events"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      },
      "post": {
        "operationId": "appendEvent",
        "summary": "Append a protected event outbox entry",
        "tags": [
          "Events"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "401": {
            "description": "PLATPHORM_API_KEY required"
          }
        },
        "security": [
          {
            "PlatPhormApiKey": []
          },
          {
            "PlatPhormBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "type"
                ],
                "additionalProperties": true
              }
            }
          }
        }
      }
    },
    "/api/webhooks": {
      "post": {
        "operationId": "receiveWebhook",
        "summary": "Receive a protected platform webhook",
        "tags": [
          "Webhooks"
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "401": {
            "description": "PLATPHORM_API_KEY required"
          }
        },
        "security": [
          {
            "PlatPhormApiKey": []
          },
          {
            "PlatPhormBearer": []
          }
        ]
      }
    },
    "/api/mcp": {
      "get": {
        "operationId": "getMcpMetadata",
        "summary": "Public MCP metadata and usage",
        "tags": [
          "MCP"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      },
      "post": {
        "operationId": "jsonRpcMcp",
        "summary": "JSON-RPC 2.0 MCP endpoint. Private reads and mutations require PLATPHORM_API_KEY.",
        "tags": [
          "MCP"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "PlatPhormApiKey": {
        "type": "apiKey",
        "in": "header",
        "name": "X-PlatPhorm-API-Key",
        "description": "Protected actions also accept Authorization: Bearer $PLATPHORM_API_KEY."
      },
      "PlatPhormBearer": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "PLATPHORM_API_KEY",
        "description": "Authorization: Bearer $PLATPHORM_API_KEY"
      }
    }
  },
  "security": [],
  "x-platphorm": {
    "service": "jobs.platphormnews.com",
    "storageMode": "ephemeral-memory",
    "primaryDiscoverySources": [
      "https://platphormnews.com/api/network/graph",
      "https://base.platphormnews.com/sitemap-index.xml"
    ],
    "integrations": [
      "https://calendar.platphormnews.com",
      "https://kanban.platphormnews.com",
      "https://mcp.platphormnews.com",
      "https://trace.platphormnews.com",
      "https://docs.platphormnews.com",
      "https://webhooks.platphormnews.com",
      "https://browserops.platphormnews.com",
      "https://evals.platphormnews.com",
      "https://jules.platphormnews.com",
      "https://onboard.platphormnews.com",
      "https://monitor.platphormnews.com",
      "https://sheets.platphormnews.com",
      "https://decks.platphormnews.com",
      "https://claws.platphormnews.com"
    ],
    "publicAccess": true,
    "protectedAuth": "PLATPHORM_API_KEY",
    "trustPolicy": "Web dashboard, public-safe discovery, browser-based operations, trusted-domain discovery, standard route compliance, Vercel metadata capture, trace inspection, and agentic workflow discovery are intentionally supported for public read-only debugging and operator workflows. Mutating, administrative, ingestion, replay, fork, remediation, deployment, sync, test-triggering, reporting, and write actions require PLATPHORM_API_KEY."
  },
  "x-network": {
    "parent": "https://platphormnews.com",
    "mcpHub": "https://mcp.platphormnews.com/api/mcp",
    "integrations": [
      "https://calendar.platphormnews.com",
      "https://kanban.platphormnews.com",
      "https://mcp.platphormnews.com",
      "https://trace.platphormnews.com",
      "https://docs.platphormnews.com",
      "https://webhooks.platphormnews.com",
      "https://browserops.platphormnews.com",
      "https://evals.platphormnews.com",
      "https://jules.platphormnews.com",
      "https://onboard.platphormnews.com",
      "https://monitor.platphormnews.com",
      "https://sheets.platphormnews.com",
      "https://decks.platphormnews.com",
      "https://claws.platphormnews.com"
    ],
    "sitemap": "https://jobs.platphormnews.com/sitemap.xml"
  }
}