{
  "openapi": "3.1.0",
  "info": {
    "title": "Jobby assistant search",
    "version": "1.0.0",
    "description": "Search currently open jobs collected from supported employer career sites. A free Grasany account and Jobby assistant key are required. Never submit applications on the user's behalf."
  },
  "servers": [{ "url": "https://jobby.grasany.com" }],
  "paths": {
    "/api/search": {
      "get": {
        "operationId": "searchJobs",
        "summary": "Search current employer jobs",
        "security": [{ "JobbyKey": [] }],
        "parameters": [
          { "name": "assistant", "in": "query", "required": true, "schema": { "type": "string", "const": "1" } },
          { "name": "query", "in": "query", "schema": { "type": "string", "minLength": 3, "maxLength": 80 }, "description": "Title or location text" },
          { "name": "title", "in": "query", "schema": { "type": "string", "minLength": 3, "maxLength": 80 } },
          { "name": "company", "in": "query", "schema": { "type": "string" }, "description": "Company ID from /api/companies" },
          { "name": "country", "in": "query", "schema": { "type": "string", "maxLength": 60 } },
          { "name": "category", "in": "query", "schema": { "type": "string", "maxLength": 40 } },
          { "name": "remote", "in": "query", "schema": { "type": "string", "enum": ["remote"] } },
          { "name": "skill", "in": "query", "schema": { "type": "string" } },
          { "name": "page", "in": "query", "schema": { "type": "integer", "minimum": 0, "maximum": 20 } }
        ],
        "responses": {
          "200": { "description": "Current jobs. Each job includes its official employer URL." },
          "401": { "description": "Missing, expired, revoked, or rate-limited assistant key." },
          "503": { "description": "Search temporarily unavailable." }
        }
      }
    }
  },
  "components": { "securitySchemes": { "JobbyKey": {
    "type": "http", "scheme": "bearer", "description": "Create a private key at https://jobby.grasany.com/assistants"
  } } }
}
