{"openapi":"3.1.0","servers":[{"url":"https://api.quake.dev","description":"Production server"}],"info":{"title":"Quake Core API","version":"0.1.0","description":"Quake Core API allows 3rd parties to integrate with the Quake.dev platform via OAuth 2.0. It supports app-scoped access through client_credentials and user-scoped delegated login through the authorization-code flow plus /oauth/session."},"tags":[{"name":"Auth","description":"Quake Core API authentication. Quake Core supports app-scoped OAuth 2.0 client_credentials and user-scoped delegated login. Start delegated login at /api/openapi/authorize, then exchange the returned code at /oauth/session to receive an access_token, refresh_token, and delegated session summary. Delegated scopes are filtered by requested scopes, client scopes, and the signed-in dataset user's permissions. Standard OAuth token exchange remains available at /oauth/token."},{"name":"Apps","description":"Operations related to applications using the Fusion platform"},{"name":"Jobs","description":"Operations related to job postings and management"},{"name":"Clients","description":"Operations related to OAuth clients"},{"name":"Candidates","description":"Operations related to candidates"},{"name":"Contacts","description":"Operations related to contacts"},{"name":"Skills","description":"Operations related to tenant-managed skills catalogs and graph mappings"},{"name":"Custom Entities","description":"Operations related to custom entity records"},{"name":"Users","description":"Operations related to dataset users"},{"name":"AI Agents","description":"Discovery operations related to AI agents"},{"name":"AI Conversations","description":"Operations related to AI conversation listing, history, and deletion"},{"name":"LLM Models","description":"Discovery operations related to dataset-enabled LLM models"},{"name":"Job Applications","description":"Operations related to job applications"},{"name":"Job Leads","description":"Operations related to vacancy signals used for recruitment business development"},{"name":"Search","description":"Search across supported entities"},{"name":"Notes","description":"Operations related to notes attached to records"},{"name":"Placements","description":"Operations related to candidate placements"},{"name":"Job Submissions","description":"Operations related to job submissions (candidate pipeline submissions)"},{"name":"Tags","description":"Operations related to tag definitions and tag values"},{"name":"Custom Entity Definitions","description":"Manage custom entity schema definitions. The scopes customEntities:read and customEntities:write apply to all custom entities in the dataset."},{"name":"External Chat","description":"Build external chat UIs on top of Quake AI agents. This surface uses delegated OpenAPI sessions and streams events over Server-Sent Events from /stream-api/v1/agent-chat."}],"paths":{"/oauth/authorize":{"get":{"operationId":"oauthAuthorize","summary":"OAuth2 code flow","tags":["Auth"],"description":"Start the Quake authorization-code login flow. Quake handles dashboard login, dataset selection for the OAuth client's dataset, and MFA if needed, then redirects back with an authorization code. Exchange that code at /oauth/session for a delegated user session or at /oauth/token for a standard OAuth access token.","parameters":[{"schema":{"type":"string"},"required":true,"name":"client_id","in":"query"},{"schema":{"type":"string","format":"uri"},"required":false,"name":"redirect_uri","in":"query"},{"schema":{"type":"string","enum":["code"]},"required":true,"name":"response_type","in":"query"},{"schema":{"type":"string"},"required":false,"name":"scope","in":"query"},{"schema":{"type":"string"},"required":false,"name":"state","in":"query"},{"schema":{"type":"string","enum":["chrome_extension"]},"required":false,"name":"channel","in":"query"},{"schema":{"type":"string"},"required":false,"name":"code_challenge","in":"query"},{"schema":{"type":"string","enum":["S256","plain"]},"required":false,"name":"code_challenge_method","in":"query"}],"responses":{"302":{"description":"Redirect","headers":{"Location":{"description":"Redirect URL"}}}}}},"/oauth/token":{"post":{"operationId":"oauthToken","summary":"OAuth2 token","tags":["Auth"],"description":"Obtain an app-scoped OAuth2 access token. Use this for client_credentials and standard authorization_code token exchange. For user-scoped delegated login, start at /api/openapi/authorize and exchange the returned code at /oauth/session instead.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenRequest"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/TokenRequest"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/oauth/session":{"post":{"operationId":"oauthSessionExchange","summary":"Exchange authorization code for delegated session","tags":["Auth"],"description":"Exchange an OAuth authorization code into a delegated OpenAPI session. This flow signs an external system into Quake Core API as a real Quake user inside the OAuth client's dataset. The final granted scopes are filtered by the requested scopes, the client's allowed scopes, and the signed-in dataset user's permissions.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DelegatedSessionExchangeRequest"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/DelegatedSessionExchangeRequest"}}}},"responses":{"200":{"description":"Delegated session created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DelegatedSessionTokenResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/oauth/session/refresh":{"post":{"operationId":"oauthSessionRefresh","summary":"Refresh delegated session","tags":["Auth"],"description":"Rotate a delegated OpenAPI session refresh token and return a new access token. Refresh re-checks the client's scopes, the user's dataset membership, and the user's current permissions before issuing the next delegated token.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DelegatedSessionRefreshRequest"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/DelegatedSessionRefreshRequest"}}}},"responses":{"200":{"description":"Delegated session refreshed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DelegatedSessionTokenResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/session":{"get":{"operationId":"oauthSession","summary":"Get delegated session","tags":["Auth"],"description":"Return the current delegated OpenAPI session for the presented bearer token. This endpoint only works for delegated user sessions and returns the current user, dataset, client, MFA summary, and granted scopes.","responses":{"200":{"description":"Delegated session","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DelegatedSessionSummary"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/apps":{"get":{"operationId":"listApps","tags":["Apps"],"summary":"List Apps","description":"List the available published apps on Quake.dev platform\n\nSometimes the apps may be in beta or private mode and not listed here.","parameters":[{"schema":{"type":"string"},"required":false,"name":"search","in":"query"}],"responses":{"200":{"description":"List apps","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/App"}}}}}}}},"/apps/{appId}/actions":{"get":{"operationId":"listAppActions","tags":["Apps"],"summary":"List App Actions","description":"List public actions for a published app.","parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"}],"responses":{"200":{"description":"List actions for an app","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AppDiscoveryActionSummary"}}}}},"404":{"description":"App not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/apps/{appId}/actions/{actionId}":{"get":{"operationId":"getAppAction","tags":["Apps"],"summary":"Get App Action","description":"Get a public action definition for a published app.","parameters":[{"schema":{"type":"string"},"required":true,"name":"appId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"actionId","in":"path"}],"responses":{"200":{"description":"Action details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppDiscoveryAction"}}}},"404":{"description":"App or action not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/action_input_schema_definition":{"get":{"operationId":"getActionInputSchemaDefinition","tags":["Apps"],"summary":"Get Action Schema Definition","description":"Get the allowed public schema definitions for app action discovery payloads.","responses":{"200":{"description":"Discovery schema definition document","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppDiscoverySchemaDefinitionDocument"}}}}}}},"/core/jobs":{"get":{"operationId":"listJobs","summary":"List all jobs","description":"Retrieve a list of all jobs for the current dataset.\n\n### Mental model\n\n- `filters` is a JSON string query param.\n- `search` is a JSON string query param.\n- `select` is a CSV query param. Omit it to keep the existing full response shape. Include it to return only those fields.\n- Each provided filter is combined with **AND**.\n- Pagination uses `limit` and `offset`.\n- Results are ordered by newest source-created record first: `created_at DESC, id DESC`.\n\n### Filter behavior\n\n- `client_id`, `remote_id`, `code`, and `status`: exact match.\n- `statuses`: any-match filter (`status IN (...)`).\n  - Accepts an array of status strings.\n  - If both `status` and `statuses` are provided, Quake matches any distinct value supplied across both.\n- `owners`: any-match filter over job owner or secondary owners.\n  - Accepts an array of dataset user UUIDs or emails.\n  - For delegated OpenAPI sessions, Quake applies access-group visibility first, then owner filtering within the visible job set.\n- `created_at` and `updated_at`: date range objects with optional `from` and/or `to`.\n  - Date-only upper bounds (for example `2026-01-31`) include the full day.\n- `tags`: accepts an array of tag filters. Each filter has `tag_definition_id` and `tag_value_ids`.\n  - Different tag definitions are combined with **AND**.\n  - Multiple values for the same tag definition are combined with **OR**.\n\n### Search behavior\n\n- `search` accepts `{ search_text, fields }`.\n- `fields` may include only `title`, `description`, `code`, or `remote_id`.\n- When `fields` is omitted, it defaults to `[\"title\"]`.\n- Search uses PostgreSQL full-text search over only the selected fields.\n\n### Select examples\n\n- `select=id,title,code,status,updated_at`\n- `select=id,owner,tag_assignments,dashboard_url`\n\nSupported select fields: `id`, `dataset_id`, `client_id`, `client_name`, `title`, `code`, `description`, `location`, `salary`, `requirements`, `status`, `remote_id`, `meta`, `owner`, `created_by`, `tag_assignments`, `created_at`, `updated_at`, `dashboard_url`.\n\n### Example\n\n```js\nfilters = {\n  \"client_id\": \"client-uuid\",\n  \"status\": \"Open\",\n  \"statuses\": [\"Open\", \"Published\"],\n  \"owners\": [\"owner@example.com\", \"550e8400-e29b-41d4-a716-446655440099\"],\n  \"created_at\": { \"from\": \"2026-01-01\", \"to\": \"2026-01-31\" },\n  \"updated_at\": { \"from\": \"2026-02-01T00:00:00.000Z\" },\n  \"tags\": [{\"tag_definition_id\":\"tag-definition-uuid\",\"tag_value_ids\":[\"tag-value-uuid\"]}]\n}\n\nsearch = {\n  \"search_text\": \"engineer\",\n  \"fields\": [\"title\", \"remote_id\"]\n}\n```","security":[{"Bearer":["jobs:read"]}],"tags":["Jobs"],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":300,"default":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":["integer","null"],"minimum":0,"default":0},"required":false,"name":"offset","in":"query"},{"schema":{"type":"string","example":"{\"client_id\":\"client-uuid\",\"remote_id\":\"ext-123\",\"code\":\"JOB-001\",\"status\":\"Open\",\"statuses\":[\"Open\",\"Published\"],\"owners\":[\"owner@example.com\",\"550e8400-e29b-41d4-a716-446655440099\"],\"created_at\":{\"from\":\"2026-01-01\",\"to\":\"2026-01-31\"},\"updated_at\":{\"from\":\"2026-02-01T00:00:00.000Z\"}}"},"required":false,"name":"filters","in":"query"},{"schema":{"type":"string","description":"JSON string search object. `fields` defaults to `[\"title\"]` when omitted. Allowed fields: `title`, `description`, `code`, `remote_id`.","example":"{\"search_text\":\"engineer\",\"fields\":[\"title\",\"description\"]}"},"required":false,"description":"JSON string search object. `fields` defaults to `[\"title\"]` when omitted. Allowed fields: `title`, `description`, `code`, `remote_id`.","name":"search","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of fields to return. When omitted, the response keeps the existing full list shape. When present, only requested fields are returned. Supported fields: id, dataset_id, client_id, client_name, title, code, description, location, salary, requirements, status, remote_id, meta, owner, created_by, tag_assignments, created_at, updated_at, dashboard_url.","example":"id,title,code,status,updated_at"},"required":false,"description":"Comma-separated list of fields to return. When omitted, the response keeps the existing full list shape. When present, only requested fields are returned. Supported fields: id, dataset_id, client_id, client_name, title, code, description, location, salary, requirements, status, remote_id, meta, owner, created_by, tag_assignments, created_at, updated_at, dashboard_url.","name":"select","in":"query"}],"responses":{"200":{"description":"List jobs. Without `select`, items use the full job shape. With `select`, each item contains only the requested fields.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/JobListItem"}},"total":{"type":"number"}},"required":["data","total"]}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"operationId":"createJob","summary":"Create a new job","description":"Create a new job record in the current dataset.","tags":["Jobs"],"security":[{"Bearer":["jobs:write"]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobCreate"}}}},"responses":{"201":{"description":"Create job","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/jobs/count":{"get":{"operationId":"countJobs","summary":"Count jobs","description":"Count jobs for the current dataset based on filters. Supports `status`, `statuses`, `owners`, `created_at`, `updated_at`, and the other `/jobs` list filters.","security":[{"Bearer":["jobs:read"]}],"tags":["Jobs"],"parameters":[{"schema":{"type":"string","example":"{\"client_id\":\"client-uuid\",\"remote_id\":\"ext-123\",\"code\":\"JOB-001\",\"status\":\"Open\",\"statuses\":[\"Open\",\"Published\"],\"owners\":[\"owner@example.com\",\"550e8400-e29b-41d4-a716-446655440099\"],\"created_at\":{\"from\":\"2026-01-01\",\"to\":\"2026-01-31\"},\"updated_at\":{\"from\":\"2026-02-01T00:00:00.000Z\"}}"},"required":false,"name":"filters","in":"query"},{"schema":{"type":"string","description":"JSON string search object. `fields` defaults to `[\"title\"]` when omitted. Allowed fields: `title`, `description`, `code`, `remote_id`.","example":"{\"search_text\":\"engineer\",\"fields\":[\"title\",\"description\"]}"},"required":false,"description":"JSON string search object. `fields` defaults to `[\"title\"]` when omitted. Allowed fields: `title`, `description`, `code`, `remote_id`.","name":"search","in":"query"}],"responses":{"200":{"description":"Job count","headers":{"Cache-Control":{"schema":{"type":"string","example":"private, max-age=60"},"required":true}},"content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"number"}},"required":["count"]}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/jobs/upsert":{"post":{"operationId":"upsertJob","summary":"Upsert a job","description":"Create or update a job matched by code or remote_id.","tags":["Jobs"],"security":[{"Bearer":["jobs:write"]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobUpsert"}}}},"responses":{"200":{"description":"Upsert job","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobUpsertResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/jobs/{id}":{"get":{"operationId":"getJob","summary":"Get a job by ID","description":"Retrieve a single job by its unique identifier.","tags":["Jobs"],"security":[{"Bearer":["jobs:read"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Get job","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"patch":{"operationId":"updateJob","summary":"Update a job","description":"Update the details of an existing job by its unique identifier.","tags":["Jobs"],"security":[{"Bearer":["jobs:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobUpdate"}}}},"responses":{"200":{"description":"Update job","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"operationId":"deleteJob","summary":"Delete a job","description":"Delete a job from the dataset by its unique identifier.","tags":["Jobs"],"security":[{"Bearer":["jobs:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"204":{"description":"Delete job"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/clients":{"get":{"operationId":"listClients","summary":"List all clients","description":"Retrieve a list of all clients for the current dataset.\n\n### Mental model\n\n- `search` is a JSON string query param.\n- `search_attributes` is a JSON string query param.\n- `filters` is a JSON string query param.\n- `remote_id` is an exact-match query param. Prefer `filters.remote_id` for new integrations.\n- Each provided filter is combined with **AND**.\n- Pagination uses `limit` and `offset`.\n\n### Filter behavior\n\n- `remote_id`: exact match.\n- `tags`: accepts an array of tag filters. Each filter has `tag_definition_id` and `tag_value_ids`.\n  - Different tag definitions are combined with **AND**.\n  - Multiple values for the same tag definition are combined with **OR**.\n\n### Search behavior\n\n- `search` accepts `{ search_text, fields }`.\n- `fields` may include only `name`, `remote_id`, `industry`, or `description`.\n- When `fields` is omitted, it defaults to `[\"name\", \"remote_id\"]`.\n- Name search uses substring + trigram fuzzy matching.\n- `industry` and `description` use PostgreSQL full-text search over selected fields.","security":[{"Bearer":["clients:read"]}],"tags":["Clients"],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":1000,"default":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":["integer","null"],"minimum":0,"default":0},"required":false,"name":"offset","in":"query"},{"schema":{"type":"string","example":"{\"remote_id\":\"ext-123\",\"tags\":[{\"tag_definition_id\":\"tag-definition-uuid\",\"tag_value_ids\":[\"tag-value-uuid\"]}]}"},"required":false,"name":"filters","in":"query"},{"schema":{"type":"string","description":"JSON string search object. `fields` defaults to `[\"name\",\"remote_id\"]` when omitted. Allowed fields: `name`, `remote_id`, `industry`, `description`.","example":"{\"search_text\":\"acme\",\"fields\":[\"name\",\"industry\"]}"},"required":false,"description":"JSON string search object. `fields` defaults to `[\"name\",\"remote_id\"]` when omitted. Allowed fields: `name`, `remote_id`, `industry`, `description`.","name":"search","in":"query"},{"schema":{"type":"string","description":"Attribute to search on. needs to be a json shape e.g. `{\"attribute_id\": value | \"value\"}`"},"required":false,"description":"Attribute to search on. needs to be a json shape e.g. `{\"attribute_id\": value | \"value\"}`","name":"search_attributes","in":"query"},{"schema":{"type":"string","description":"External record ID to match exactly."},"required":false,"description":"External record ID to match exactly.","name":"remote_id","in":"query"}],"responses":{"200":{"description":"List clients","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Client"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"operationId":"createClient","summary":"Create a new client","tags":["Clients"],"description":"Create a new client record in the current dataset.","security":[{"Bearer":["clients:write"]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientCreate"}}}},"responses":{"201":{"description":"Create client","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Client"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/clients/count":{"get":{"operationId":"countClients","summary":"Count clients","description":"Count clients for the current dataset based on filters.","security":[{"Bearer":["clients:read"]}],"tags":["Clients"],"parameters":[{"schema":{"type":"string","example":"{\"remote_id\":\"ext-123\",\"tags\":[{\"tag_definition_id\":\"tag-definition-uuid\",\"tag_value_ids\":[\"tag-value-uuid\"]}]}"},"required":false,"name":"filters","in":"query"},{"schema":{"type":"string","description":"JSON string search object. `fields` defaults to `[\"name\",\"remote_id\"]` when omitted. Allowed fields: `name`, `remote_id`, `industry`, `description`.","example":"{\"search_text\":\"acme\",\"fields\":[\"name\",\"industry\"]}"},"required":false,"description":"JSON string search object. `fields` defaults to `[\"name\",\"remote_id\"]` when omitted. Allowed fields: `name`, `remote_id`, `industry`, `description`.","name":"search","in":"query"},{"schema":{"type":"string","description":"Attribute to search on. needs to be a json shape e.g. `{\"attribute_id\": value | \"value\"}`"},"required":false,"description":"Attribute to search on. needs to be a json shape e.g. `{\"attribute_id\": value | \"value\"}`","name":"search_attributes","in":"query"},{"schema":{"type":"string","description":"External record ID to match exactly."},"required":false,"description":"External record ID to match exactly.","name":"remote_id","in":"query"}],"responses":{"200":{"description":"Client count","headers":{"Cache-Control":{"schema":{"type":"string","example":"private, max-age=60"},"required":true}},"content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"number"}},"required":["count"]}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/clients/upsert":{"post":{"operationId":"upsertClient","summary":"Upsert a client","tags":["Clients"],"description":"Create or update a client using an explicit idempotency key contract.","security":[{"Bearer":["clients:write"]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientUpsert"}}}},"responses":{"200":{"description":"Upsert client","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientUpsertResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/clients/{id}":{"get":{"operationId":"getClient","summary":"Get a client by ID","tags":["Clients"],"description":"Retrieve a single client by its unique identifier.","security":[{"Bearer":["clients:read"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Get client","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Client"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"patch":{"operationId":"updateClient","summary":"Update a client","tags":["Clients"],"description":"Update the details of an existing client by its unique identifier.","security":[{"Bearer":["clients:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientUpdate"}}}},"responses":{"200":{"description":"Update client","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Client"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"operationId":"deleteClient","summary":"Delete a client","tags":["Clients"],"description":"Delete a client from the dataset by its unique identifier.","security":[{"Bearer":["clients:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"204":{"description":"Delete client"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/candidates":{"get":{"operationId":"listCandidates","summary":"List all candidates","description":"Retrieve candidates for the current dataset.\n\n### Mental model\n\n- `filters` is a JSON string query param.\n- `search` is a JSON string query param.\n- `sort` is an ordered CSV query param.\n- `select` is a CSV query param. Omit it to keep the existing full response shape. Include it to return only those fields.\n- Each top-level filter group is combined with **AND**.\n- Inside each group, matching is containment/exact depending on field type.\n- When `vector_search` is not used, results are ordered by newest source-created record first: `created_at DESC`.\n- When `vector_search` is used, results are ordered by vector similarity.\n- Pagination uses `limit` and `offset` (`limit` defaults to 100 and is capped at 1000).\n- When using `vector_search`, prefer a lower `limit` so clients only request the most relevant similarity-ranked matches.\n- `sort` supports 1+ columns and is applied left-to-right.\n- Use `-column` for descending and bare `column` for ascending.\n- Supported sort columns: `created_at`, `updated_at`, `status`, `similarity`.\n- `similarity` is ignored unless `vector_search` is present.\n- If `sort` is omitted, or every requested sort becomes a no-op, Quake falls back to the default ordering above.\n\n### Filter behavior\n\n- `remote_id`: exact match (`remote_id = value`).\n- `status`: exact match (`status = value`).\n- `statuses`: any-match filter (`status IN (...)`).\n  - Accepts an array of status strings.\n  - If both `status` and `statuses` are provided, Quake matches any distinct value supplied across both.\n- `owners`: any-match filter over candidate primary owner or secondary owners.\n  - Accepts an array of dataset user UUIDs or emails.\n  - For delegated OpenAPI sessions, Quake applies access-group visibility first, then owner filtering within the visible candidate set.\n- `created_at` and `updated_at`: date range objects with optional `from` and/or `to`.\n  - Date-only upper bounds (for example `2026-01-31`) include the full day.\n- `profile_urls`: containment match on the candidate `profile_urls` array.\n  - Accepts either a single object or an array of objects.\n  - Uses containment (`profile_urls @> filter`), so each provided object must be found in candidate `profile_urls`.\n  - Object keys are matched by key/value (partial object matching is allowed).\n- `attributes`: containment match on `meta.attributes`.\n  - Uses `coalesce(meta->'attributes', '{}') @> filter`.\n  - Candidate must include all provided attribute key/value pairs (can include more).\n- `skills`: array of skill UUIDs.\n  - Candidate must have all listed skills via `candidate_skills` assignments.\n- `skill_sets`: array of skill set UUIDs.\n  - Each referenced skill set is resolved to its member skills.\n  - Candidate must have all skills across the selected skill sets.\n  - Invalid or empty skill sets return `400`.\n- `tags`: accepts an array of tag filters. Each filter has `tag_definition_id` and `tag_value_ids`. Tag filter logic:\n  - Different tag definitions are combined with **AND**.\n  - Multiple values for the same tag definition are combined with **OR**.\n\n### Search behavior\n\n- `search` accepts `{ search_text, fields }`.\n- `fields` currently only allows `search_document`.\n- When `fields` is omitted, it defaults to `[\"search_document\"]`.\n- Search uses PostgreSQL full-text search over the selected fields.\n- `vector_search` accepts a plain string query.\n- When provided, Quake generates an embedding for that string and filters candidates through the chunked candidate embeddings table.\n- `vector_search` is AND-combined with normal filters and `search`.\n- For list queries with `vector_search`, results are ranked by similarity instead of `created_at`.\n\n### Sort examples\n\n- `sort=-created_at`\n- `sort=status,-updated_at`\n- `sort=similarity,-created_at`\n\n### Select examples\n\n- `select=id,first_name,last_name,email,updated_at`\n- `select=id,primary_owner,secondary_owners,tag_assignments,dashboard_url`\n\nSupported select fields: `id`, `dataset_id`, `first_name`, `last_name`, `email`, `remote_id`, `phone`, `description`, `location`, `rate`, `employment_preference`, `status`, `willing_to_relocate`, `profile_urls`, `skills`, `experience`, `education`, `notes`, `meta`, `photo_url`, `created_at`, `updated_at`, `primary_owner`, `secondary_owners`, `tag_assignments`, `dashboard_url`.\n\n### Example\n\n```js\nfilters = {\n  \"remote_id\": \"ext-123\",\n  \"statuses\": [\"active\", \"inactive\"],\n  \"owners\": [\"owner@example.com\", \"550e8400-e29b-41d4-a716-446655440099\"],\n  \"created_at\": { \"from\": \"2026-01-01\", \"to\": \"2026-01-31\" },\n  \"updated_at\": { \"from\": \"2026-02-01T00:00:00.000Z\" },\n  \"profile_urls\": [{\"type\":\"linkedin\",\"external_id\":\"1234567890\"}],\n  \"attributes\": {\"classification\":\"suitable\", \"clearance\":\"military\" },\n  \"tags\": [{\"tag_definition_id\":\"tag-definition-uuid\",\"tag_value_ids\":[\"tag-value-uuid\"]}]\n}\n```\n\n### Example 2 - filtering by a custom attribute of type record\n\n```js\nfilters = {\n    \"attributes\": {\"job_title\": \"uuid-of-job-title-record\"}\n}\n```\n\n### Example 3 - filtering by a custom attribute of type multirecord\n\n```js\nfilters = {\n    \"attributes\": {\"work_locations\": [\"uuid-of-location-1\", \"uuid-of-location-2\"]}\n}\n```\n\nThe above means: return candidates that match `remote_id`, have status `active` or `inactive`, contain that LinkedIn profile URL object, and include `meta.attributes.classification = suitable` and `meta.attributes.clearance = military`.","security":[{"Bearer":["candidates:read"]}],"tags":["Candidates"],"parameters":[{"schema":{"type":"integer","minimum":1,"default":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":["integer","null"],"minimum":0,"default":0},"required":false,"name":"offset","in":"query"},{"schema":{"type":"string","example":"{\"remote_id\":\"ext-123\",\"status\":\"active\",\"statuses\":[\"active\",\"inactive\"],\"owners\":[\"550e8400-e29b-41d4-a716-446655440099\"],\"created_at\":{\"from\":\"2026-01-01\",\"to\":\"2026-01-31\"},\"updated_at\":{\"from\":\"2026-02-01T00:00:00.000Z\"},\"profile_urls\":[{\"type\":\"linkedin\",\"external_id\":\"1234567890\"}],\"attributes\":{\"key\":\"value\"},\"skills\":[\"550e8400-e29b-41d4-a716-446655440000\"],\"skill_sets\":[\"550e8400-e29b-41d4-a716-446655440001\"]}"},"required":false,"name":"filters","in":"query"},{"schema":{"type":"string","description":"Ordered CSV sort list. Use `-column` for descending. Supported columns: `created_at`, `updated_at`, `status`, `similarity`.","example":"-created_at,status"},"required":false,"description":"Ordered CSV sort list. Use `-column` for descending. Supported columns: `created_at`, `updated_at`, `status`, `similarity`.","name":"sort","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Plain-text embedding query applied over candidate embedding chunks. Prefer a lower limit when using vector search because results are ranked by similarity.","example":"ICU nurse"},"required":false,"description":"Plain-text embedding query applied over candidate embedding chunks. Prefer a lower limit when using vector search because results are ranked by similarity.","name":"vector_search","in":"query"},{"schema":{"type":"string","description":"JSON string search object. `fields` defaults to `[\"search_document\"]` when omitted. Allowed fields: `search_document`.","example":"{\"search_text\":\"nurse\",\"fields\":[\"search_document\"]}"},"required":false,"description":"JSON string search object. `fields` defaults to `[\"search_document\"]` when omitted. Allowed fields: `search_document`.","name":"search","in":"query"},{"schema":{"type":"string","description":"Comma-separated list of fields to return. When omitted, the response keeps the existing full list shape. When present, only requested fields are returned. Supported fields: id, dataset_id, first_name, last_name, email, remote_id, phone, description, location, rate, employment_preference, status, willing_to_relocate, profile_urls, skills, experience, education, notes, meta, photo_url, created_at, updated_at, primary_owner, secondary_owners, tag_assignments, dashboard_url.","example":"id,first_name,last_name,email,updated_at"},"required":false,"description":"Comma-separated list of fields to return. When omitted, the response keeps the existing full list shape. When present, only requested fields are returned. Supported fields: id, dataset_id, first_name, last_name, email, remote_id, phone, description, location, rate, employment_preference, status, willing_to_relocate, profile_urls, skills, experience, education, notes, meta, photo_url, created_at, updated_at, primary_owner, secondary_owners, tag_assignments, dashboard_url.","name":"select","in":"query"}],"responses":{"200":{"description":"List candidates. Without `select`, items use the full candidate shape. With `select`, each item contains only the requested fields.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CandidateListItem"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"operationId":"createCandidate","summary":"Create a new candidate","description":"Create a new candidate record in the current dataset.","tags":["Candidates"],"security":[{"Bearer":["candidates:write"]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateCreate"}}}},"responses":{"201":{"description":"Create candidate","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Candidate"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/candidates/count":{"get":{"operationId":"countCandidates","summary":"Count candidates","description":"Count candidates for the current dataset based on filters.","security":[{"Bearer":["candidates:read"]}],"tags":["Candidates"],"parameters":[{"schema":{"type":"string","example":"{\"remote_id\":\"ext-123\",\"status\":\"active\",\"statuses\":[\"active\",\"inactive\"],\"owners\":[\"550e8400-e29b-41d4-a716-446655440099\"],\"created_at\":{\"from\":\"2026-01-01\",\"to\":\"2026-01-31\"},\"updated_at\":{\"from\":\"2026-02-01T00:00:00.000Z\"},\"profile_urls\":[{\"type\":\"linkedin\",\"external_id\":\"1234567890\"}],\"attributes\":{\"key\":\"value\"},\"skills\":[\"550e8400-e29b-41d4-a716-446655440000\"],\"skill_sets\":[\"550e8400-e29b-41d4-a716-446655440001\"]}"},"required":false,"name":"filters","in":"query"},{"schema":{"type":"string","minLength":1,"description":"Plain-text embedding query applied over candidate embedding chunks. For list queries, prefer a lower limit because vector search results are ranked by similarity.","example":"ICU nurse"},"required":false,"description":"Plain-text embedding query applied over candidate embedding chunks. For list queries, prefer a lower limit because vector search results are ranked by similarity.","name":"vector_search","in":"query"},{"schema":{"type":"string","description":"JSON string search object. `fields` defaults to `[\"search_document\"]` when omitted. Allowed fields: `search_document`.","example":"{\"search_text\":\"nurse\",\"fields\":[\"search_document\"]}"},"required":false,"description":"JSON string search object. `fields` defaults to `[\"search_document\"]` when omitted. Allowed fields: `search_document`.","name":"search","in":"query"}],"responses":{"200":{"description":"Candidate count","headers":{"Cache-Control":{"schema":{"type":"string","example":"private, max-age=60"},"required":true}},"content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"number"}},"required":["count"]}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/candidates/{id}":{"get":{"operationId":"getCandidate","summary":"Get a candidate by ID","description":"Retrieve a single candidate by their unique identifier.","tags":["Candidates"],"security":[{"Bearer":["candidates:read"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Get candidate","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Candidate"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"patch":{"operationId":"updateCandidate","summary":"Update a candidate","description":"Update the details of an existing candidate by their unique identifier.","tags":["Candidates"],"security":[{"Bearer":["candidates:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateUpdate"}}}},"responses":{"200":{"description":"Update candidate","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Candidate"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"operationId":"deleteCandidate","summary":"Delete a candidate","description":"Delete a candidate from the dataset by their unique identifier.","tags":["Candidates"],"security":[{"Bearer":["candidates:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"204":{"description":"Delete candidate"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/candidates/{id}/documents":{"get":{"operationId":"listCandidateDocuments","summary":"List candidate documents","description":"Return all documents attached to a candidate in the current dataset, including parsing status and parsing metadata.","tags":["Candidates"],"security":[{"Bearer":["candidates:read"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Candidate documents","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CandidateDocumentListItem"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"operationId":"addCandidateDocuments","summary":"Add documents to a candidate","description":"Upload one or more documents to an existing candidate.","tags":["Candidates"],"security":[{"Bearer":["candidates:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateDocumentsUpload"}}}},"responses":{"200":{"description":"Uploaded candidate documents","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CandidateDocument"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/candidates/{id}/documents/{documentId}":{"get":{"operationId":"getCandidateDocument","summary":"Get a candidate document download URL","description":"Return a presigned S3 URL for a single candidate document. The URL expires after 1 hour and the API does not proxy file bytes.","tags":["Candidates"],"security":[{"Bearer":["candidates:read"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1},"required":true,"name":"documentId","in":"path"}],"responses":{"200":{"description":"Presigned candidate document URL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateDocumentPresignedUrl"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/candidates/upsert":{"post":{"operationId":"upsertCandidate","summary":"Upsert a candidate","description":"Create or update a candidate. Deduplicates by email and/or remote_id by default. Supply idempotency_key to deduplicate on a custom meta.attributes key instead.","tags":["Candidates"],"security":[{"Bearer":["candidates:write"]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CandidateUpsert"}}}},"responses":{"200":{"description":"Upserted candidate","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Candidate"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/contacts":{"get":{"operationId":"listContacts","summary":"List all contacts","description":"Retrieve a list of all contacts for the current dataset.\n\n### Filter behavior\n\n- `remote_id`: exact match.\n- `profile_urls`: containment match on the contact `profile_urls` array.\n- `tags`: accepts an array of tag filters. Each filter has `tag_definition_id` and `tag_value_ids`.\n  - Different tag definitions are combined with **AND**.\n  - Multiple values for the same tag definition are combined with **OR**.","security":[{"Bearer":["contacts:read"]}],"tags":["Contacts"],"parameters":[{"schema":{"type":"string","example":"{\"remote_id\":\"ext-123\",\"profile_urls\":[{\"type\":\"linkedin\",\"external_id\":\"1234567890\"}]}"},"required":false,"name":"filters","in":"query"}],"responses":{"200":{"description":"List contacts","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Contact"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"operationId":"createContact","summary":"Create a new contact","description":"Create a new contact record in the current dataset.","tags":["Contacts"],"security":[{"Bearer":["contacts:write"]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactCreate"}}}},"responses":{"201":{"description":"Create contact","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contact"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/contacts/count":{"get":{"operationId":"countContacts","summary":"Count contacts","description":"Count contacts for the current dataset based on filters.","security":[{"Bearer":["contacts:read"]}],"tags":["Contacts"],"parameters":[{"schema":{"type":"string","example":"{\"remote_id\":\"ext-123\",\"profile_urls\":[{\"type\":\"linkedin\",\"external_id\":\"1234567890\"}]}"},"required":false,"name":"filters","in":"query"}],"responses":{"200":{"description":"Contact count","headers":{"Cache-Control":{"schema":{"type":"string","example":"private, max-age=60"},"required":true}},"content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"number"}},"required":["count"]}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/contacts/upsert":{"post":{"operationId":"upsertContact","summary":"Upsert a contact","description":"Create or update a contact using an explicit idempotency key contract.","tags":["Contacts"],"security":[{"Bearer":["contacts:write"]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactUpsert"}}}},"responses":{"200":{"description":"Upsert contact","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactUpsertResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/contacts/{id}":{"get":{"operationId":"getContact","summary":"Get a contact by ID","description":"Retrieve a single contact by its unique identifier.","tags":["Contacts"],"security":[{"Bearer":["contacts:read"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Get contact","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contact"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"patch":{"operationId":"updateContact","summary":"Update a contact","description":"Update the details of an existing contact by its unique identifier.","tags":["Contacts"],"security":[{"Bearer":["contacts:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactUpdate"}}}},"responses":{"200":{"description":"Update contact","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contact"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"operationId":"deleteContact","summary":"Delete a contact","description":"Delete a contact from the dataset by its unique identifier.","tags":["Contacts"],"security":[{"Bearer":["contacts:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"204":{"description":"Delete contact"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/skills":{"get":{"operationId":"listSkills","tags":["Skills"],"security":[{"Bearer":["skills:read"]}],"responses":{"200":{"description":"List skills","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":"string"},"name":{"type":"string"},"normalized_key":{"type":"string"},"skill_category_id":{"type":["string","null"]},"skill_category_label":{"type":["string","null"]},"status":{"type":"string"},"description":{"type":["string","null"]},"meta":{"type":"object","additionalProperties":{}},"created_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]},"updated_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]}},"required":["id","dataset_id","name","normalized_key","skill_category_id","status","description","meta"]}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"operationId":"createSkill","tags":["Skills"],"security":[{"Bearer":["skills:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1},"skill_category_id":{"type":["string","null"],"format":"uuid"},"status":{"type":"string"},"description":{"type":["string","null"]},"meta":{"type":"object","additionalProperties":{}}},"required":["name"]}}}},"responses":{"201":{"description":"Create skill","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":"string"},"name":{"type":"string"},"normalized_key":{"type":"string"},"skill_category_id":{"type":["string","null"]},"skill_category_label":{"type":["string","null"]},"status":{"type":"string"},"description":{"type":["string","null"]},"meta":{"type":"object","additionalProperties":{}},"created_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]},"updated_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]}},"required":["id","dataset_id","name","normalized_key","skill_category_id","status","description","meta"]}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/skills/{skillId}":{"get":{"operationId":"getSkillById","tags":["Skills"],"security":[{"Bearer":["skills:read"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"skillId","in":"path"}],"responses":{"200":{"description":"Get skill","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":"string"},"name":{"type":"string"},"normalized_key":{"type":"string"},"skill_category_id":{"type":["string","null"]},"skill_category_label":{"type":["string","null"]},"status":{"type":"string"},"description":{"type":["string","null"]},"meta":{"type":"object","additionalProperties":{}},"created_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]},"updated_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]}},"required":["id","dataset_id","name","normalized_key","skill_category_id","status","description","meta"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"patch":{"operationId":"updateSkill","tags":["Skills"],"security":[{"Bearer":["skills:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"skillId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1},"skill_category_id":{"type":["string","null"],"format":"uuid"},"status":{"type":"string"},"description":{"type":["string","null"]},"meta":{"type":"object","additionalProperties":{}}}}}}},"responses":{"200":{"description":"Update skill","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":"string"},"name":{"type":"string"},"normalized_key":{"type":"string"},"skill_category_id":{"type":["string","null"]},"skill_category_label":{"type":["string","null"]},"status":{"type":"string"},"description":{"type":["string","null"]},"meta":{"type":"object","additionalProperties":{}},"created_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]},"updated_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]}},"required":["id","dataset_id","name","normalized_key","skill_category_id","status","description","meta"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"operationId":"deleteSkill","tags":["Skills"],"security":[{"Bearer":["skills:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"skillId","in":"path"}],"responses":{"200":{"description":"Delete skill","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/skill-categories":{"get":{"operationId":"listSkillCategories","tags":["Skills"],"security":[{"Bearer":["skills:read"]}],"responses":{"200":{"description":"List records","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":"string"},"key":{"type":"string"},"label":{"type":"string"},"description":{"type":["string","null"]},"sort_order":{"type":"number"},"status":{"type":"string"},"is_seeded":{"type":"boolean"},"created_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]},"updated_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]}},"required":["id","dataset_id","key","label","description","sort_order","status","is_seeded"]}}}}}}},"post":{"operationId":"createSkillCategory","tags":["Skills"],"security":[{"Bearer":["skills:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string","minLength":1},"label":{"type":"string","minLength":1},"description":{"type":["string","null"]},"sort_order":{"type":"number"},"status":{"type":"string"},"is_seeded":{"type":"boolean"}},"required":["key","label"]}}}},"responses":{"201":{"description":"Create record","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":"string"},"key":{"type":"string"},"label":{"type":"string"},"description":{"type":["string","null"]},"sort_order":{"type":"number"},"status":{"type":"string"},"is_seeded":{"type":"boolean"},"created_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]},"updated_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]}},"required":["id","dataset_id","key","label","description","sort_order","status","is_seeded"]}}}}}}},"/core/skill-categories/{id}":{"patch":{"operationId":"updateSkillCategory","tags":["Skills"],"security":[{"Bearer":["skills:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string","minLength":1},"label":{"type":"string","minLength":1},"description":{"type":["string","null"]},"sort_order":{"type":"number"},"status":{"type":"string"},"is_seeded":{"type":"boolean"}}}}}},"responses":{"200":{"description":"Update record","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":"string"},"key":{"type":"string"},"label":{"type":"string"},"description":{"type":["string","null"]},"sort_order":{"type":"number"},"status":{"type":"string"},"is_seeded":{"type":"boolean"},"created_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]},"updated_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]}},"required":["id","dataset_id","key","label","description","sort_order","status","is_seeded"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"operationId":"deleteSkillCategory","tags":["Skills"],"security":[{"Bearer":["skills:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Delete record","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/skill-link-types":{"get":{"operationId":"listSkillLinkTypes","tags":["Skills"],"security":[{"Bearer":["skills:read"]}],"responses":{"200":{"description":"List records","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":"string"},"key":{"type":"string"},"label":{"type":"string"},"description":{"type":["string","null"]},"sort_order":{"type":"number"},"status":{"type":"string"},"is_seeded":{"type":"boolean"},"created_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]},"updated_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]}},"required":["id","dataset_id","key","label","description","sort_order","status","is_seeded"]}}}}}}},"post":{"operationId":"createSkillLinkType","tags":["Skills"],"security":[{"Bearer":["skills:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string","minLength":1},"label":{"type":"string","minLength":1},"description":{"type":["string","null"]},"sort_order":{"type":"number"},"status":{"type":"string"},"is_seeded":{"type":"boolean"}},"required":["key","label"]}}}},"responses":{"201":{"description":"Create record","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":"string"},"key":{"type":"string"},"label":{"type":"string"},"description":{"type":["string","null"]},"sort_order":{"type":"number"},"status":{"type":"string"},"is_seeded":{"type":"boolean"},"created_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]},"updated_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]}},"required":["id","dataset_id","key","label","description","sort_order","status","is_seeded"]}}}}}}},"/core/skill-link-types/{id}":{"patch":{"operationId":"updateSkillLinkType","tags":["Skills"],"security":[{"Bearer":["skills:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string","minLength":1},"label":{"type":"string","minLength":1},"description":{"type":["string","null"]},"sort_order":{"type":"number"},"status":{"type":"string"},"is_seeded":{"type":"boolean"}}}}}},"responses":{"200":{"description":"Update record","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":"string"},"key":{"type":"string"},"label":{"type":"string"},"description":{"type":["string","null"]},"sort_order":{"type":"number"},"status":{"type":"string"},"is_seeded":{"type":"boolean"},"created_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]},"updated_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]}},"required":["id","dataset_id","key","label","description","sort_order","status","is_seeded"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"operationId":"deleteSkillLinkType","tags":["Skills"],"security":[{"Bearer":["skills:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Delete record","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/proficiency-scales":{"get":{"operationId":"listProficiencyScales","tags":["Skills"],"security":[{"Bearer":["skills:read"]}],"responses":{"200":{"description":"List records","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":"string"},"key":{"type":"string"},"label":{"type":"string"},"description":{"type":["string","null"]},"sort_order":{"type":"number"},"status":{"type":"string"},"is_seeded":{"type":"boolean"},"created_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]},"updated_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]}},"required":["id","dataset_id","key","label","description","sort_order","status","is_seeded"]}}}}}}},"post":{"operationId":"createProficiencyScale","tags":["Skills"],"security":[{"Bearer":["skills:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string","minLength":1},"label":{"type":"string","minLength":1},"description":{"type":["string","null"]},"sort_order":{"type":"number"},"status":{"type":"string"},"is_seeded":{"type":"boolean"}},"required":["key","label"]}}}},"responses":{"201":{"description":"Create record","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":"string"},"key":{"type":"string"},"label":{"type":"string"},"description":{"type":["string","null"]},"sort_order":{"type":"number"},"status":{"type":"string"},"is_seeded":{"type":"boolean"},"created_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]},"updated_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]}},"required":["id","dataset_id","key","label","description","sort_order","status","is_seeded"]}}}}}}},"/core/proficiency-scales/{id}":{"patch":{"operationId":"updateProficiencyScale","tags":["Skills"],"security":[{"Bearer":["skills:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string","minLength":1},"label":{"type":"string","minLength":1},"description":{"type":["string","null"]},"sort_order":{"type":"number"},"status":{"type":"string"},"is_seeded":{"type":"boolean"}}}}}},"responses":{"200":{"description":"Update record","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":"string"},"key":{"type":"string"},"label":{"type":"string"},"description":{"type":["string","null"]},"sort_order":{"type":"number"},"status":{"type":"string"},"is_seeded":{"type":"boolean"},"created_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]},"updated_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]}},"required":["id","dataset_id","key","label","description","sort_order","status","is_seeded"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"operationId":"deleteProficiencyScale","tags":["Skills"],"security":[{"Bearer":["skills:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Delete record","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/skill-aliases":{"get":{"operationId":"listSkillAliases","tags":["Skills"],"security":[{"Bearer":["skills:read"]}],"responses":{"200":{"description":"List aliases","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":"string"},"skill_id":{"type":"string"},"skill_name":{"type":"string"},"alias_text":{"type":"string"},"alias_kind":{"type":["string","null"],"description":"Server-controlled alias provenance. Values are \"manual\" or \"ai_generated\"."},"created_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]},"updated_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]}},"required":["id","dataset_id","skill_id","alias_text","alias_kind"]}}}}}}},"post":{"operationId":"createSkillAlias","tags":["Skills"],"security":[{"Bearer":["skills:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"skill_id":{"type":"string","format":"uuid"},"alias_text":{"type":"string","minLength":1}},"required":["skill_id","alias_text"]}}}},"responses":{"201":{"description":"Create alias","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":"string"},"skill_id":{"type":"string"},"skill_name":{"type":"string"},"alias_text":{"type":"string"},"alias_kind":{"type":["string","null"],"description":"Server-controlled alias provenance. Values are \"manual\" or \"ai_generated\"."},"created_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]},"updated_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]}},"required":["id","dataset_id","skill_id","alias_text","alias_kind"]}}}}}}},"/core/skill-aliases/{id}":{"patch":{"operationId":"updateSkillAlias","tags":["Skills"],"security":[{"Bearer":["skills:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"skill_id":{"type":"string","format":"uuid"},"alias_text":{"type":"string","minLength":1}}}}}},"responses":{"200":{"description":"Update alias","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":"string"},"skill_id":{"type":"string"},"skill_name":{"type":"string"},"alias_text":{"type":"string"},"alias_kind":{"type":["string","null"],"description":"Server-controlled alias provenance. Values are \"manual\" or \"ai_generated\"."},"created_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]},"updated_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]}},"required":["id","dataset_id","skill_id","alias_text","alias_kind"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"operationId":"deleteSkillAlias","tags":["Skills"],"security":[{"Bearer":["skills:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Delete alias","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/skill-links":{"get":{"operationId":"listSkillLinks","tags":["Skills"],"security":[{"Bearer":["skills:read"]}],"responses":{"200":{"description":"List links","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":"string"},"from_skill_id":{"type":"string"},"to_skill_id":{"type":"string"},"from_skill_name":{"type":"string"},"to_skill_name":{"type":"string"},"skill_link_type_id":{"type":"string"},"skill_link_type_label":{"type":"string"},"directional":{"type":"boolean"},"source":{"type":"string","enum":["manual","ai_generated"],"description":"Link provenance. Use \"manual\" for user-created links and \"ai_generated\" for AI-created links."},"created_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]},"updated_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]}},"required":["id","dataset_id","from_skill_id","to_skill_id","skill_link_type_id","directional","source"]}}}}}}},"post":{"operationId":"createSkillLink","tags":["Skills"],"security":[{"Bearer":["skills:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"from_skill_id":{"type":"string","format":"uuid"},"to_skill_id":{"type":"string","format":"uuid"},"skill_link_type_id":{"type":"string","format":"uuid"},"directional":{"type":"boolean"},"source":{"type":"string","enum":["manual","ai_generated"],"description":"Link provenance. Use \"manual\" for user-created links and \"ai_generated\" for AI-created links."}},"required":["from_skill_id","to_skill_id","skill_link_type_id"]}}}},"responses":{"201":{"description":"Create link","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":"string"},"from_skill_id":{"type":"string"},"to_skill_id":{"type":"string"},"from_skill_name":{"type":"string"},"to_skill_name":{"type":"string"},"skill_link_type_id":{"type":"string"},"skill_link_type_label":{"type":"string"},"directional":{"type":"boolean"},"source":{"type":"string","enum":["manual","ai_generated"],"description":"Link provenance. Use \"manual\" for user-created links and \"ai_generated\" for AI-created links."},"created_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]},"updated_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]}},"required":["id","dataset_id","from_skill_id","to_skill_id","skill_link_type_id","directional","source"]}}}}}}},"/core/skill-links/{id}":{"patch":{"operationId":"updateSkillLink","tags":["Skills"],"security":[{"Bearer":["skills:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"from_skill_id":{"type":"string","format":"uuid"},"to_skill_id":{"type":"string","format":"uuid"},"skill_link_type_id":{"type":"string","format":"uuid"},"directional":{"type":"boolean"},"source":{"type":"string","enum":["manual","ai_generated"],"description":"Link provenance. Use \"manual\" for user-created links and \"ai_generated\" for AI-created links."}}}}}},"responses":{"200":{"description":"Update link","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":"string"},"from_skill_id":{"type":"string"},"to_skill_id":{"type":"string"},"from_skill_name":{"type":"string"},"to_skill_name":{"type":"string"},"skill_link_type_id":{"type":"string"},"skill_link_type_label":{"type":"string"},"directional":{"type":"boolean"},"source":{"type":"string","enum":["manual","ai_generated"],"description":"Link provenance. Use \"manual\" for user-created links and \"ai_generated\" for AI-created links."},"created_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]},"updated_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]}},"required":["id","dataset_id","from_skill_id","to_skill_id","skill_link_type_id","directional","source"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"operationId":"deleteSkillLink","tags":["Skills"],"security":[{"Bearer":["skills:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Delete link","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/skill-presets":{"get":{"operationId":"listSkillPresets","tags":["Skills"],"security":[{"Bearer":["skills:read"]}],"responses":{"200":{"description":"List presets","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":"string"},"name":{"type":"string"},"purpose":{"type":["string","null"]},"mode":{"type":"string"},"created_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]},"updated_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]}},"required":["id","dataset_id","name","purpose","mode"]}}}}}}},"post":{"operationId":"createSkillPreset","tags":["Skills"],"security":[{"Bearer":["skills:write"]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1},"purpose":{"type":["string","null"]}},"required":["name"]}}}},"responses":{"201":{"description":"Create preset","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":"string"},"name":{"type":"string"},"purpose":{"type":["string","null"]},"mode":{"type":"string"},"created_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]},"updated_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]}},"required":["id","dataset_id","name","purpose","mode"]}}}}}}},"/core/skill-presets/{id}":{"patch":{"operationId":"updateSkillPreset","tags":["Skills"],"security":[{"Bearer":["skills:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1},"purpose":{"type":["string","null"]}}}}}},"responses":{"200":{"description":"Update preset","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":"string"},"name":{"type":"string"},"purpose":{"type":["string","null"]},"mode":{"type":"string"},"created_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]},"updated_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]}},"required":["id","dataset_id","name","purpose","mode"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"operationId":"deleteSkillPreset","tags":["Skills"],"security":[{"Bearer":["skills:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Delete preset","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/skill-presets/{id}/members":{"put":{"operationId":"replaceSkillPresetMembers","tags":["Skills"],"security":[{"Bearer":["skills:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"members":{"type":"array","items":{"type":"object","properties":{"skill_id":{"type":"string","format":"uuid"},"priority_weight":{"type":"number","minimum":0}},"required":["skill_id"]}}},"required":["members"]}}}},"responses":{"200":{"description":"Replace preset members","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"preset_id":{"type":"string"},"skill_id":{"type":"string"}},"required":["id","preset_id","skill_id"]}}}}}}}},"/core/custom-entities/{customEntityId}/records":{"get":{"operationId":"listCustomEntityRecords","summary":"List custom entity records","description":"Requires OAuth scope `customEntities.<customEntityId>:read`.","security":[{"Bearer":[]}],"tags":["Custom Entities"],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"customEntityId","in":"path"},{"schema":{"type":"integer","minimum":1,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"required":false,"name":"pageSize","in":"query"}],"responses":{"200":{"description":"Paginated custom entity records","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomEntityRecordList"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"operationId":"createCustomEntityRecord","summary":"Create custom entity record","description":"Requires OAuth scope `customEntities.<customEntityId>:write`.","security":[{"Bearer":[]}],"tags":["Custom Entities"],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"customEntityId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomEntityRecordCreate"}}}},"responses":{"201":{"description":"Created custom entity record","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomEntityRecord"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/custom-entities/{customEntityId}/records/count":{"get":{"operationId":"countCustomEntityRecords","summary":"Count custom entity records","description":"Requires OAuth scope `customEntities.<customEntityId>:read`.","security":[{"Bearer":[]}],"tags":["Custom Entities"],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"customEntityId","in":"path"}],"responses":{"200":{"description":"Custom entity record count","headers":{"Cache-Control":{"schema":{"type":"string","example":"private, max-age=60"},"required":true}},"content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"number"}},"required":["count"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/custom-entities/{customEntityId}/records/{recordId}":{"get":{"operationId":"getCustomEntityRecord","summary":"Get custom entity record","description":"Requires OAuth scope `customEntities.<customEntityId>:read`.","security":[{"Bearer":[]}],"tags":["Custom Entities"],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"customEntityId","in":"path"},{"schema":{"type":"string","format":"uuid"},"required":true,"name":"recordId","in":"path"}],"responses":{"200":{"description":"Custom entity record","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomEntityRecord"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"patch":{"operationId":"updateCustomEntityRecord","summary":"Update custom entity record","description":"Requires OAuth scope `customEntities.<customEntityId>:write`.","security":[{"Bearer":[]}],"tags":["Custom Entities"],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"customEntityId","in":"path"},{"schema":{"type":"string","format":"uuid"},"required":true,"name":"recordId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomEntityRecordUpdate"}}}},"responses":{"200":{"description":"Updated custom entity record","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomEntityRecord"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"operationId":"deleteCustomEntityRecord","summary":"Delete custom entity record","description":"Requires OAuth scope `customEntities.<customEntityId>:write`.","security":[{"Bearer":[]}],"tags":["Custom Entities"],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"customEntityId","in":"path"},{"schema":{"type":"string","format":"uuid"},"required":true,"name":"recordId","in":"path"}],"responses":{"204":{"description":"Deleted"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/search":{"post":{"summary":"Search entities","tags":["Search"],"operationId":"searchEntities","description":"Search across supported entities using vector search where available. Use this API when you're searching via natural language.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchRequest"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/users":{"get":{"operationId":"listUsers","summary":"List dataset users","description":"Retrieve dataset-scoped users for the current dataset.","security":[{"Bearer":["users:read"]}],"tags":["Users"],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":false,"name":"id","in":"query"},{"schema":{"type":"string","format":"email"},"required":false,"name":"email","in":"query"},{"schema":{"type":"string","minLength":1},"required":false,"name":"remote_id","in":"query"},{"schema":{"type":"string","enum":["true","false"]},"required":false,"name":"is_deleted","in":"query"},{"schema":{"type":"string","enum":["true","false"]},"required":false,"name":"is_active","in":"query"},{"schema":{"type":"string","enum":["true","false"]},"required":false,"name":"is_verified","in":"query"},{"schema":{"type":"string","description":"JSON string filter object. Supported fields: `ids`, `emails`, `remote_ids`, `is_deleted`, `is_active`, `is_verified`.","example":"{\"ids\":[\"550e8400-e29b-41d4-a716-446655440000\"],\"emails\":[\"user@example.com\"],\"remote_ids\":[\"ext-123\"],\"is_active\":true}"},"required":false,"description":"JSON string filter object. Supported fields: `ids`, `emails`, `remote_ids`, `is_deleted`, `is_active`, `is_verified`.","name":"filters","in":"query"}],"responses":{"200":{"description":"List dataset users","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DatasetUser"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"operationId":"createUser","summary":"Create a dataset user","description":"Create an inactive dataset-scoped user for the current dataset.","security":[{"Bearer":["users:write"]}],"tags":["Users"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreate"}}}},"responses":{"201":{"description":"Created dataset user","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetUser"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/users/{id}":{"get":{"operationId":"getUser","summary":"Get a dataset user","description":"Retrieve a dataset-scoped user by membership ID.","security":[{"Bearer":["users:read"]}],"tags":["Users"],"parameters":[{"schema":{"type":"string","format":"uuid","description":"Dataset user membership ID."},"required":true,"description":"Dataset user membership ID.","name":"id","in":"path"}],"responses":{"200":{"description":"Get dataset user","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetUser"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"patch":{"operationId":"updateUser","summary":"Update a dataset user","description":"Update dataset-scoped user profile, active state, verification state, or role by membership ID.","security":[{"Bearer":["users:write"]}],"tags":["Users"],"parameters":[{"schema":{"type":"string","format":"uuid","description":"Dataset user membership ID."},"required":true,"description":"Dataset user membership ID.","name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserUpdate"}}}},"responses":{"200":{"description":"Updated dataset user","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetUser"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"operationId":"deleteUser","summary":"Delete a dataset user","description":"Remove a user membership from the current dataset by membership ID.","security":[{"Bearer":["users:write"]}],"tags":["Users"],"parameters":[{"schema":{"type":"string","format":"uuid","description":"Dataset user membership ID."},"required":true,"description":"Dataset user membership ID.","name":"id","in":"path"}],"responses":{"204":{"description":"Deleted dataset user"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/ai-agents":{"get":{"operationId":"listAiAgents","summary":"List AI agents","description":"List AI agents for the current dataset. Delegated user sessions return only agents visible to the signed-in user. App-only OAuth tokens return all dataset agents.","security":[{"Bearer":["agentChats:write"]},{"Bearer":["ai_agents:read"]}],"tags":["AI Agents"],"responses":{"200":{"description":"List AI agents","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OpenAPIAiAgent"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/ai-conversations":{"get":{"operationId":"listAiConversations","summary":"List AI conversations","description":"List AI conversations for the current dataset. Delegated user sessions return only conversations owned by the signed-in user. App-only OAuth tokens return all dataset conversations.","security":[{"Bearer":["agentChats:write"]}],"tags":["AI Conversations"],"parameters":[{"schema":{"type":"integer","minimum":1,"default":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":["integer","null"],"minimum":0,"default":0},"required":false,"name":"offset","in":"query"},{"schema":{"type":"string","minLength":1},"required":false,"name":"search","in":"query"}],"responses":{"200":{"description":"List AI conversations","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OpenAPIAiConversationSummary"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/ai-conversations/{conversationId}/history":{"get":{"operationId":"getAiConversationHistory","summary":"Get AI conversation history","description":"Get message history for one AI conversation. Delegated user sessions reuse existing collaboration rules. App-only OAuth tokens can read any conversation in the current dataset.","security":[{"Bearer":["agentChats:write"]}],"tags":["AI Conversations"],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"conversationId","in":"path"}],"responses":{"200":{"description":"AI conversation history","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OpenAPIAiConversationHistoryMessage"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/ai-conversations/{conversationId}":{"delete":{"operationId":"deleteAiConversation","summary":"Delete AI conversation","description":"Delete one AI conversation. Delegated user sessions reuse existing owner/admin manage rules. App-only OAuth tokens can delete any conversation in the current dataset.","security":[{"Bearer":["agentChats:write"]}],"tags":["AI Conversations"],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"conversationId","in":"path"}],"responses":{"204":{"description":"Conversation deleted"},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/ai-conversations/files/upload-urls":{"post":{"operationId":"createAiConversationFileUploadUrls","summary":"Create AI conversation file upload URLs","description":"Create one or more presigned upload URLs for private AI conversation attachments. Upload the file bytes to S3 first, then create file records with /ai-conversations/files.","security":[{"Bearer":["agentChats:write"]}],"tags":["AI Conversations"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenAPIAiConversationUploadUrlsRequest"}}}},"responses":{"200":{"description":"Created upload URLs for AI conversation files","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenAPIAiConversationUploadUrlsResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Conversation not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/ai-conversations/files":{"post":{"operationId":"createAiConversationFiles","summary":"Create AI conversation file records","description":"Create one or more private AI conversation file records after the bytes have already been uploaded to the presigned S3 URLs.","security":[{"Bearer":["agentChats:write"]}],"tags":["AI Conversations"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenAPIAiConversationCreateFilesRequest"}}}},"responses":{"200":{"description":"Created AI conversation file records","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenAPIAiConversationCreateFilesResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/llm-models/allowed":{"get":{"operationId":"listAllowedLlmModels","summary":"List allowed LLM models","description":"List dataset-enabled LLM models available for AI agents and chat experiences in the current dataset.","security":[{"Bearer":["agentChats:write"]},{"Bearer":["ai_agents:read"]}],"tags":["LLM Models"],"responses":{"200":{"description":"List allowed LLM models","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AllowedLlmModel"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/apps/installations":{"get":{"operationId":"listInstalledApps","summary":"List installed apps","description":"List installed apps and their available actions for the current dataset.","security":[{"Bearer":["integrations:read"]}],"tags":["Apps"],"parameters":[{"schema":{"type":"string"},"required":false,"name":"search","in":"query"}],"responses":{"200":{"description":"List installed apps","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstalledAppsListResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/apps/installations/{installedAppId}/actions":{"get":{"operationId":"listInstalledAppActions","summary":"List installed app actions","description":"List available actions for an installed app in the current dataset.","security":[{"Bearer":["integrations:read"]}],"tags":["Apps"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"installedAppId","in":"path"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"}],"responses":{"200":{"description":"List installed app actions","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InstalledAppActionSummary"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Installed app not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/apps/installations/{installedAppId}/actions/{actionId}":{"get":{"operationId":"getInstalledAppAction","summary":"Get installed app action","description":"Get action details for an installed app in the current dataset.","security":[{"Bearer":["integrations:read"]}],"tags":["Apps"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"installedAppId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"actionId","in":"path"}],"responses":{"200":{"description":"Installed app action details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstalledAppAction"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Installed app or action not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/apps/installations/{installedAppId}/actions/{actionId}/execute":{"post":{"operationId":"executeInstalledAppAction","summary":"Execute installed app action","description":"Execute an action through a specific installed app configuration in the current dataset.","security":[{"Bearer":["integrations:write"]}],"tags":["Apps"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"installedAppId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"actionId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteInstalledAppActionBody"}}}},"responses":{"200":{"description":"Action execution result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteInstalledAppActionResponse"}}}},"202":{"description":"Action execution accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteInstalledAppActionAcceptedResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Installed app or action not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Action execution failed with an upstream HTTP error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many installed app action runs are currently active or queued","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/apps/installations/action-runs/{runId}":{"get":{"operationId":"getInstalledAppActionRun","summary":"Get installed app action async run","description":"Fetch status and terminal result for an async installed app action execution run.","security":[{"Bearer":["integrations:write"]}],"tags":["Apps"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"runId","in":"path"}],"responses":{"200":{"description":"Installed app action async run","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstalledAppActionRunResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Installed app action run not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/placements":{"get":{"operationId":"listPlacements","summary":"List placements","description":"List placements for the current dataset.\n\n### Mental model\n\n- `filters` is a JSON string query param.\n- `search` is a JSON string query param.\n- Each top-level filter group is combined with **AND**.\n- Multi-value filters match any provided value within that field.\n- Pagination uses `limit` and `offset`.\n- Results are ordered by newest first: `created_at DESC, id DESC`.\n\n### Filter behavior\n\n- `clients`, `candidates`, `jobs`, `statuses`, `placement_types`, and `sources`: match any provided value.\n- `owners`: accepts an array of owner filter objects.\n  - Each owner object may include `id`, `type`, or both.\n  - Owner objects are combined with **OR**.\n  - Inside one owner object, provided keys are combined with **AND**.\n\n### Search behavior\n\n- `search` accepts `{ search_text, fields }`.\n- `fields` may include only `candidate_name`, `client_name`, or `job_title`.\n- When `fields` is omitted, it defaults to `[\"candidate_name\",\"client_name\",\"job_title\"]`.\n- Search uses case-insensitive partial matching over the selected fields.\n\n### Pagination and deprecations\n\n- Prefer `limit` and `offset` for new integrations.\n- Deprecated query params `candidate_id` and `client_id` are still supported and map to `filters.candidates` and `filters.clients` when those new filter groups are absent.\n- Deprecated query params `page` and `page_size` are still supported.\n- If `limit` or `offset` is provided, they take precedence over `page` and `page_size`.\n- The response still includes deprecated compatibility fields `page` and `page_size`.\n\n### Example\n\n```js\nfilters = {\n  \"clients\": [\"client-uuid\"],\n  \"candidates\": [\"candidate-uuid\"],\n  \"jobs\": [\"job-uuid\"],\n  \"statuses\": [\"Placed\"],\n  \"owners\": [{\"id\":\"user-dataset-uuid\",\"type\":\"user\"}],\n  \"placement_types\": [\"Permanent\"],\n  \"sources\": [\"linkedin\"]\n}\n\nsearch = {\n  \"search_text\": \"acme\",\n  \"fields\": [\"client_name\", \"job_title\"]\n}\n```","tags":["Placements"],"security":[{"Bearer":["placements:read"]}],"parameters":[{"schema":{"type":"integer","minimum":1,"example":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":["integer","null"],"minimum":0,"example":0},"required":false,"name":"offset","in":"query"},{"schema":{"type":"string","example":"{\"clients\":[\"550e8400-e29b-41d4-a716-446655440000\"],\"candidates\":[\"550e8400-e29b-41d4-a716-446655440001\"],\"jobs\":[\"550e8400-e29b-41d4-a716-446655440002\"],\"statuses\":[\"Placed\"],\"owners\":[{\"id\":\"550e8400-e29b-41d4-a716-446655440003\",\"type\":\"user\"}],\"placement_types\":[\"Permanent\"],\"sources\":[\"linkedin\"]}"},"required":false,"name":"filters","in":"query"},{"schema":{"type":"string","description":"JSON string search object. `fields` defaults to `[\"candidate_name\",\"client_name\",\"job_title\"]` when omitted. Allowed fields: `candidate_name`, `client_name`, `job_title`.","example":"{\"search_text\":\"acme\",\"fields\":[\"client_name\",\"job_title\"]}"},"required":false,"description":"JSON string search object. `fields` defaults to `[\"candidate_name\",\"client_name\",\"job_title\"]` when omitted. Allowed fields: `candidate_name`, `client_name`, `job_title`.","name":"search","in":"query"},{"schema":{"type":"string","deprecated":true,"description":"Deprecated. Prefer `filters.candidates`."},"required":false,"description":"Deprecated. Prefer `filters.candidates`.","name":"candidate_id","in":"query"},{"schema":{"type":"string","deprecated":true,"description":"Deprecated. Prefer `filters.clients`."},"required":false,"description":"Deprecated. Prefer `filters.clients`.","name":"client_id","in":"query"},{"schema":{"type":"integer","minimum":1,"deprecated":true,"description":"Deprecated. Prefer `limit` and `offset`."},"required":false,"description":"Deprecated. Prefer `limit` and `offset`.","name":"page","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"deprecated":true,"description":"Deprecated. Prefer `limit` and `offset`."},"required":false,"description":"Deprecated. Prefer `limit` and `offset`.","name":"page_size","in":"query"}],"responses":{"200":{"description":"List placements","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlacementList"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"operationId":"createPlacement","summary":"Create a placement","description":"Create a placement record in the current dataset.","tags":["Placements"],"security":[{"Bearer":["placements:write"]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlacementCreate"}}}},"responses":{"201":{"description":"Create placement","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Placement"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/placements/upsert":{"post":{"operationId":"upsertPlacement","summary":"Upsert a placement","description":"Create or update a placement matched by id, idempotency_key, or remote_id.","tags":["Placements"],"security":[{"Bearer":["placements:write"]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlacementUpsert"}}}},"responses":{"200":{"description":"Upsert placement","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Placement"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/placements/{id}":{"get":{"operationId":"getPlacement","summary":"Get a placement","description":"Retrieve a single placement by its unique identifier.","tags":["Placements"],"security":[{"Bearer":["placements:read"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Get placement","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Placement"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"patch":{"operationId":"updatePlacement","summary":"Update a placement","description":"Update the details of an existing placement by its unique identifier.","tags":["Placements"],"security":[{"Bearer":["placements:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlacementUpdate"}}}},"responses":{"200":{"description":"Update placement","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Placement"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"operationId":"deletePlacement","summary":"Delete a placement","description":"Delete a placement from the dataset by its unique identifier.","tags":["Placements"],"security":[{"Bearer":["placements:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"204":{"description":"Delete placement"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/job-leads":{"get":{"operationId":"listJobLeads","summary":"List Job Leads","description":"Retrieve Job Leads for the current dataset. Archived leads are excluded unless filters.include_archived is true.","security":[{"Bearer":["jobLeads:read"]}],"tags":["Job Leads"],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":300,"default":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":["integer","null"],"minimum":0,"default":0},"required":false,"name":"offset","in":"query"},{"schema":{"type":"string","example":"{\"source\":\"fantastic_jobs\",\"availability_status\":\"active\"}"},"required":false,"name":"filters","in":"query"},{"schema":{"type":"string","example":"{\"search_text\":\"sales\",\"fields\":[\"title\",\"employer_name\"]}"},"required":false,"name":"search","in":"query"}],"responses":{"200":{"description":"List Job Leads","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/JobLead"}},"total":{"type":"number"}},"required":["data","total"]}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"operationId":"createJobLead","summary":"Create a Job Lead","description":"Create a Job Lead vacancy signal in the current dataset.","tags":["Job Leads"],"security":[{"Bearer":["jobLeads:write"]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobLeadCreate"}}}},"responses":{"201":{"description":"Create Job Lead","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobLead"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/job-leads/upsert":{"post":{"operationId":"upsertJobLead","summary":"Upsert a Job Lead","description":"Create or update a Job Lead matched by dataset, source, and remote_id when remote_id is present.","tags":["Job Leads"],"security":[{"Bearer":["jobLeads:write"]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobLeadUpsert"}}}},"responses":{"200":{"description":"Upsert Job Lead","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobLeadUpsertResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/job-leads/{id}":{"get":{"operationId":"getJobLead","summary":"Get a Job Lead","tags":["Job Leads"],"security":[{"Bearer":["jobLeads:read"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Get Job Lead","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobLead"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"patch":{"operationId":"updateJobLead","summary":"Update a Job Lead","tags":["Job Leads"],"security":[{"Bearer":["jobLeads:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobLeadUpdate"}}}},"responses":{"200":{"description":"Update Job Lead","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobLead"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"operationId":"archiveJobLead","summary":"Archive a Job Lead","description":"Soft-archive a Job Lead. The record is hidden from default lists but retained for provenance.","tags":["Job Leads"],"security":[{"Bearer":["jobLeads:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"204":{"description":"Archive Job Lead"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/job-leads/{id}/jobs/{job_id}":{"put":{"operationId":"linkJobLeadToJob","summary":"Link a Job Lead to a Recruitment Job","tags":["Job Leads"],"security":[{"Bearer":["jobLeads:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","format":"uuid"},"required":true,"name":"job_id","in":"path"}],"responses":{"200":{"description":"Job Lead job link","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobLeadJobLink"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"operationId":"unlinkJobLeadFromJob","summary":"Unlink a Job Lead from a Recruitment Job","tags":["Job Leads"],"security":[{"Bearer":["jobLeads:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","format":"uuid"},"required":true,"name":"job_id","in":"path"}],"responses":{"204":{"description":"Unlink Job Lead from job"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/job-leads/{id}/jobs":{"get":{"operationId":"listJobsForJobLead","summary":"List Recruitment Jobs linked to a Job Lead","tags":["Job Leads"],"security":[{"Bearer":["jobLeads:read"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Linked jobs","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/JobLeadLinkedJob"}}},"required":["data"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/jobs/{job_id}/job-leads":{"get":{"operationId":"listJobLeadsForJob","summary":"List Job Leads linked to a Recruitment Job","tags":["Job Leads"],"security":[{"Bearer":["jobLeads:read"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"job_id","in":"path"}],"responses":{"200":{"description":"Linked Job Leads","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/JobLead"}}},"required":["data"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/job-submissions":{"get":{"operationId":"listJobSubmissions","summary":"List job submissions","description":"Retrieve job submissions for the current dataset.\n\nFilter by `job_id`, `candidate_id`, and/or `stage`. Results are ordered by newest first (`created_at DESC`).","tags":["Job Submissions"],"security":[{"Bearer":["jobSubmissions:read"]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":300,"default":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":["integer","null"],"minimum":0,"default":0},"required":false,"name":"offset","in":"query"},{"schema":{"type":"string","format":"uuid","description":"Filter by job UUID"},"required":false,"description":"Filter by job UUID","name":"job_id","in":"query"},{"schema":{"type":"string","format":"uuid","description":"Filter by candidate UUID"},"required":false,"description":"Filter by candidate UUID","name":"candidate_id","in":"query"},{"schema":{"type":"string","description":"Filter by stage name (exact match)"},"required":false,"description":"Filter by stage name (exact match)","name":"stage","in":"query"}],"responses":{"200":{"description":"List job submissions","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/JobSubmission"}},"total":{"type":"number"}},"required":["data","total"]}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"operationId":"createJobSubmission","summary":"Create a job submission","description":"Create a new job submission linking a candidate to a job. Optionally override `created_at` and `updated_at` for data import scenarios.","tags":["Job Submissions"],"security":[{"Bearer":["jobSubmissions:write"]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobSubmissionCreate"}}}},"responses":{"201":{"description":"Created job submission","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobSubmission"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/job-submissions/count":{"get":{"operationId":"countJobSubmissions","summary":"Count job submissions","description":"Count job submissions for the current dataset based on filters.","security":[{"Bearer":["jobSubmissions:read"]}],"tags":["Job Submissions"],"parameters":[{"schema":{"type":"string","format":"uuid","description":"Filter by job UUID"},"required":false,"description":"Filter by job UUID","name":"job_id","in":"query"},{"schema":{"type":"string","format":"uuid","description":"Filter by candidate UUID"},"required":false,"description":"Filter by candidate UUID","name":"candidate_id","in":"query"},{"schema":{"type":"string","description":"Filter by stage name (exact match)"},"required":false,"description":"Filter by stage name (exact match)","name":"stage","in":"query"}],"responses":{"200":{"description":"Job submission count","headers":{"Cache-Control":{"schema":{"type":"string","example":"private, max-age=60"},"required":true}},"content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"number"}},"required":["count"]}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/job-submissions/upsert":{"post":{"operationId":"upsertJobSubmission","summary":"Upsert a job submission","description":"Create or update a job submission matched by `job_id` + `candidate_id`. Supports overriding `created_at` and `updated_at` for data import scenarios.","tags":["Job Submissions"],"security":[{"Bearer":["jobSubmissions:write"]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobSubmissionUpsert"}}}},"responses":{"200":{"description":"Upserted job submission","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobSubmissionUpsertResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/job-submissions/{id}":{"get":{"operationId":"getJobSubmission","summary":"Get a job submission","description":"Retrieve a single job submission by its unique identifier.","tags":["Job Submissions"],"security":[{"Bearer":["jobSubmissions:read"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Get job submission","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobSubmission"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"patch":{"operationId":"updateJobSubmission","summary":"Update a job submission","description":"Update an existing job submission. Supports overriding `created_at` and `updated_at` for data import scenarios.","tags":["Job Submissions"],"security":[{"Bearer":["jobSubmissions:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobSubmissionUpdate"}}}},"responses":{"200":{"description":"Updated job submission","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobSubmission"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"operationId":"deleteJobSubmission","summary":"Delete a job submission","description":"Delete a job submission from the dataset by its unique identifier.","tags":["Job Submissions"],"security":[{"Bearer":["jobSubmissions:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"204":{"description":"Delete job submission"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/applications":{"get":{"operationId":"listApplications","summary":"List applications","description":"List applications for the current dataset.\n\n### Mental model\n\n- `filters` is a JSON string query param.\n- `search` is a JSON string query param.\n- Each top-level filter group is combined with **AND**.\n- Multi-value filters match any provided value within that field.\n- Results are ordered by newest first: `created_at DESC, id DESC`.\n- Pagination uses `limit` and `offset` (`limit` defaults to 100 and is capped at 1000).\n\n### Filter behavior\n\n- `job_id`, `candidate_id`, and `stage`: match any provided value.\n- `source`: matches applications where `sources` contains an object with the given `source` value.\n- `owner`: matches applications where `owner.id` is any provided value.\n- `created_at` and `updated_at`: date range objects with optional `from` and/or `to`.\n  - Date-only upper bounds (for example `2026-01-31`) include the full day.\n\n### Search behavior\n\n- `search` accepts `{ search_text, fields }`.\n- `fields` may include only `first_name`, `last_name`, `email`, or `phone_number`.\n- When `fields` is omitted, it defaults to `[\"first_name\",\"last_name\"]`.\n- Search uses PostgreSQL full-text search over only the selected fields.","tags":["Job Applications"],"security":[{"Bearer":["applications:read"]}],"parameters":[{"schema":{"type":"integer","minimum":1,"default":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":["integer","null"],"minimum":0,"default":0},"required":false,"name":"offset","in":"query"},{"schema":{"type":"string","example":"{\"job_id\":[\"job-uuid\"],\"candidate_id\":[\"candidate-uuid\"],\"stage\":[\"new\",\"interview\"],\"source\":[\"linkedin\",\"referral\"],\"owner\":[\"user-dataset-uuid\"],\"created_at\":{\"from\":\"2026-01-01\",\"to\":\"2026-01-31\"},\"updated_at\":{\"from\":\"2026-02-01T00:00:00.000Z\"}}"},"required":false,"name":"filters","in":"query"},{"schema":{"type":"string","description":"JSON string search object. `fields` defaults to `[\"first_name\",\"last_name\"]` when omitted. Allowed fields: `first_name`, `last_name`, `email`, `phone_number`.","example":"{\"search_text\":\"api\",\"fields\":[\"first_name\",\"email\"]}"},"required":false,"description":"JSON string search object. `fields` defaults to `[\"first_name\",\"last_name\"]` when omitted. Allowed fields: `first_name`, `last_name`, `email`, `phone_number`.","name":"search","in":"query"}],"responses":{"200":{"description":"List applications","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Application"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"operationId":"createApplication","summary":"Create application","description":"Create an application in the current dataset.","tags":["Job Applications"],"security":[{"Bearer":["applications:write"]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationCreate"}}}},"responses":{"201":{"description":"Created application","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Application"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/applications/{id}":{"get":{"operationId":"getApplication","summary":"Get application","description":"Get an application by id.","tags":["Job Applications"],"security":[{"Bearer":["applications:read"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Application","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Application"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"patch":{"operationId":"updateApplication","summary":"Update application","description":"Update an application by id.","tags":["Job Applications"],"security":[{"Bearer":["applications:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationUpdate"}}}},"responses":{"200":{"description":"Updated application","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Application"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"operationId":"deleteApplication","summary":"Delete application","description":"Delete an application by id.","tags":["Job Applications"],"security":[{"Bearer":["applications:write"]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"204":{"description":"Deleted"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/applications/upsert":{"post":{"operationId":"upsertApplication","summary":"Upsert application","description":"Create or update an application matched by remote_id.","tags":["Job Applications"],"security":[{"Bearer":["applications:write"]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationUpsert"}}}},"responses":{"200":{"description":"Upserted application","content":{"application/json":{"schema":{"type":"object","properties":{"operation":{"type":"string","enum":["created","updated"]},"record":{"$ref":"#/components/schemas/Application"}},"required":["operation","record"]}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/tag-definitions":{"get":{"operationId":"listTagDefinitions","summary":"List tag definitions","tags":["Tags"],"security":[{"Bearer":["tags:read"]}],"parameters":[{"schema":{"type":"boolean","default":false},"required":false,"name":"include_archived","in":"query"}],"responses":{"200":{"description":"List tag definitions","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TagDefinition"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"operationId":"createTagDefinition","summary":"Create a tag definition","tags":["Tags"],"security":[{"Bearer":["tags:write"]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagDefinitionCreate"}}}},"responses":{"201":{"description":"Create tag definition","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagDefinition"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/tag-definitions/upsert":{"post":{"operationId":"upsertTagDefinition","summary":"Upsert a tag definition by remote_id","tags":["Tags"],"security":[{"Bearer":["tags:write"]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagDefinitionUpsert"}}}},"responses":{"200":{"description":"Upsert tag definition","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagDefinitionUpsertResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/tag-definitions/{id}":{"get":{"operationId":"getTagDefinition","summary":"Get a tag definition","tags":["Tags"],"security":[{"Bearer":["tags:read"]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Get tag definition","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagDefinition"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"patch":{"operationId":"updateTagDefinition","summary":"Update a tag definition","tags":["Tags"],"security":[{"Bearer":["tags:write"]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagDefinitionUpdate"}}}},"responses":{"200":{"description":"Update tag definition","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagDefinition"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/tag-values":{"get":{"operationId":"listTagValues","summary":"List tag values","tags":["Tags"],"security":[{"Bearer":["tags:read"]}],"parameters":[{"schema":{"type":"boolean","default":false},"required":false,"name":"include_archived","in":"query"},{"schema":{"type":"string"},"required":false,"name":"tag_definition_id","in":"query"}],"responses":{"200":{"description":"List tag values","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TagValue"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"operationId":"createTagValue","summary":"Create a tag value","tags":["Tags"],"security":[{"Bearer":["tags:write"]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagValueCreate"}}}},"responses":{"201":{"description":"Create tag value","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagValue"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/tag-values/upsert":{"post":{"operationId":"upsertTagValue","summary":"Upsert a tag value by remote_id","tags":["Tags"],"security":[{"Bearer":["tags:write"]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagValueUpsert"}}}},"responses":{"200":{"description":"Upsert tag value","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagValueUpsertResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/tag-values/{id}":{"get":{"operationId":"getTagValue","summary":"Get a tag value","tags":["Tags"],"security":[{"Bearer":["tags:read"]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Get tag value","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagValue"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"patch":{"operationId":"updateTagValue","summary":"Update a tag value","tags":["Tags"],"security":[{"Bearer":["tags:write"]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagValueUpdate"}}}},"responses":{"200":{"description":"Update tag value","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagValue"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/notes":{"get":{"operationId":"listNotes","summary":"List notes","description":"Retrieve notes for the current dataset. Optionally filter by one linked record.\n\n### Linking model\n\n- Each note stores linked records in the `records` array.\n- Each link is an object like `{ id, type }`.\n- To attach one note to multiple records such as a candidate, job, and client, pass multiple entries in `records`.\n- If you create or upsert a note with `is_remote: true`, Quake resolves that `id` as the target record's `remote_id` before storing the link.\n\n### Retrieve notes for one record\n\n- Use both `record_id` and `record_type`.\n- Example: `GET /core/notes?record_id=3f5a4d90-0c5e-4e6d-9cd0-7d9f76e2b7f3&record_type=candidate`\n- The response includes every note whose `records` array contains that exact `{ id, type }` pair.\n\n### Retrieve notes for multiple records\n\n- This endpoint supports one `record_id` + `record_type` filter per request.\n- To collect notes for multiple records, make one request per record and merge the results client-side.\n- De-duplicate by `note.id`, because a single note may be linked to more than one of the queried records.\n\nExample requests:\n\n- `GET /core/notes?record_id=3f5a4d90-0c5e-4e6d-9cd0-7d9f76e2b7f3&record_type=candidate`\n- `GET /core/notes?record_id=7f7851db-2c55-4830-8d4f-7c94a78680a8&record_type=job`","security":[{"Bearer":["notes:read"]}],"tags":["Notes"],"parameters":[{"schema":{"type":"integer","minimum":1,"default":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":["integer","null"],"minimum":0,"default":0},"required":false,"name":"offset","in":"query"},{"schema":{"type":"string","description":"Filter notes linked to this Quake record ID. Pair with record_type. When notes were linked with is_remote: true, Quake usually resolves and stores the local record ID.","example":"3f5a4d90-0c5e-4e6d-9cd0-7d9f76e2b7f3"},"required":false,"description":"Filter notes linked to this Quake record ID. Pair with record_type. When notes were linked with is_remote: true, Quake usually resolves and stores the local record ID.","name":"record_id","in":"query"},{"schema":{"type":"string","description":"Record type to filter by. Required when record_id is provided.","example":"candidate"},"required":false,"description":"Record type to filter by. Required when record_id is provided.","name":"record_type","in":"query"}],"responses":{"200":{"description":"List of notes","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Note"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"operationId":"createNote","summary":"Create a note","description":"Create a new note and optionally link it to records.\n\n### Link a note to records\n\n- Pass a `records` array with one or more record links.\n- Use Quake IDs for direct links, for example `{ id: \"3f5a4d90-0c5e-4e6d-9cd0-7d9f76e2b7f3\", type: \"candidate\" }`.\n- Use `is_remote: true` when `id` is a source-system `remote_id`.\n- One note can be linked to multiple records at once, for example candidate + job + client.\n- You may override `created_at` and `updated_at` for import/backfill workflows.\n\nExample body:\n\n```json\n{\n  \"title\": \"Candidate debrief after intake\",\n  \"content\": \"Candidate is open to hybrid roles, prefers React teams, and can interview next Tuesday.\",\n  \"external_id\": \"bullhorn-note-1024\",\n  \"records\": [\n    {\n      \"id\": \"3f5a4d90-0c5e-4e6d-9cd0-7d9f76e2b7f3\",\n      \"type\": \"candidate\"\n    },\n    {\n      \"id\": \"7f7851db-2c55-4830-8d4f-7c94a78680a8\",\n      \"type\": \"job\"\n    },\n    {\n      \"id\": \"5ce7f6f2-b484-4c44-85cc-6e6768948ff1\",\n      \"type\": \"client\"\n    }\n  ]\n}\n```\n\nRemote-id example:\n\n```json\n{\n  \"title\": \"Imported from ATS\",\n  \"content\": \"Syncing an external note while linking by remote IDs.\",\n  \"external_id\": \"greenhouse-note-88\",\n  \"records\": [\n    {\n      \"id\": \"gh-candidate-901\",\n      \"type\": \"candidate\",\n      \"is_remote\": true\n    },\n    {\n      \"id\": \"gh-job-440\",\n      \"type\": \"job\",\n      \"is_remote\": true\n    }\n  ]\n}\n```","security":[{"Bearer":["notes:write"]}],"tags":["Notes"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteCreate"}}}},"responses":{"201":{"description":"Created note","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Note"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/notes/upsert":{"post":{"operationId":"upsertNote","summary":"Upsert a note by external_id","description":"Create or update a note matched by `external_id`.\n\n- Use this when your source system has a stable note identifier and you want repeated syncs to update the same Quake note.\n- The `records` array works the same as create: pass one or many record links.\n- Use `is_remote: true` on a link when the provided `id` is the source-system `remote_id`.\n- You may override `created_at` and `updated_at` for import/backfill workflows.\n\nExample body:\n\n```json\n{\n  \"title\": \"Imported from ATS\",\n  \"content\": \"Syncing an external note while linking by remote IDs.\",\n  \"external_id\": \"greenhouse-note-88\",\n  \"records\": [\n    {\n      \"id\": \"gh-candidate-901\",\n      \"type\": \"candidate\",\n      \"is_remote\": true\n    },\n    {\n      \"id\": \"gh-job-440\",\n      \"type\": \"job\",\n      \"is_remote\": true\n    }\n  ]\n}\n```","security":[{"Bearer":["notes:write"]}],"tags":["Notes"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteUpsert"}}}},"responses":{"200":{"description":"Upserted note","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteUpsertResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/notes/{id}":{"get":{"operationId":"getNote","summary":"Get a note by ID","description":"Retrieve a single note by its unique identifier.","security":[{"Bearer":["notes:read"]}],"tags":["Notes"],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Note","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Note"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"patch":{"operationId":"updateNote","summary":"Update a note","description":"Update an existing note.\n\n- If `records` is provided, it replaces the current linked-record set for the note.\n- Pass the full desired set when re-linking a note.\n- Use `is_remote: true` on a link when the provided `id` is a source-system `remote_id`.\n- You may override `created_at` and `updated_at` for import/backfill workflows.","security":[{"Bearer":["notes:write"]}],"tags":["Notes"],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteUpdate"}}}},"responses":{"200":{"description":"Updated note","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Note"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"operationId":"deleteNote","summary":"Delete a note","description":"Delete a note by its unique identifier.","security":[{"Bearer":["notes:write"]}],"tags":["Notes"],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"204":{"description":"Note deleted"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/custom-entity-definitions":{"get":{"operationId":"listCustomEntityDefinitions","summary":"List all custom entity definitions","description":"Retrieve a list of all custom entity definitions for the current dataset.","security":[{"Bearer":["customEntities:read"]}],"tags":["Custom Entity Definitions"],"responses":{"200":{"description":"List custom entity definitions","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CustomEntityDefinition"}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"operationId":"createCustomEntityDefinition","summary":"Create a new custom entity definition","description":"Create a new custom entity definition in the current dataset.\n\nEnd-to-end usage:\n1. Define each attribute and optionally provide a stable `id`. If you omit `id`, Quake generates one from `name` using the same rules as the dashboard API.\n2. For `Record` or `Multi Record` attributes, set `table_reference` to the target table/entity. Example: `table_reference: \"user_datasets\"` means the field points at dataset members.\n3. Use the returned attribute IDs as keys in `/core/custom-entities/{customEntityId}/records` `data` payloads. For the `user_datasets` example, send one `user_datasets.id` string for a `Record` field, or an array of `user_datasets.id` strings for a `Multi Record` field.","security":[{"Bearer":["customEntities:write"]}],"tags":["Custom Entity Definitions"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomEntityDefinitionCreate"}}}},"responses":{"201":{"description":"Create custom entity definition","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomEntityDefinition"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/core/custom-entity-definitions/{id}":{"get":{"operationId":"getCustomEntityDefinition","summary":"Get a custom entity definition by ID","description":"Retrieve a single custom entity definition by its unique identifier.","security":[{"Bearer":["customEntities:read"]}],"tags":["Custom Entity Definitions"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Get custom entity definition","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomEntityDefinition"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"patch":{"operationId":"updateCustomEntityDefinition","summary":"Update a custom entity definition","description":"Update a custom entity definition by its unique identifier.","security":[{"Bearer":["customEntities:write"]}],"tags":["Custom Entity Definitions"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomEntityDefinitionUpdate"}}}},"responses":{"200":{"description":"Update custom entity definition","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomEntityDefinition"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"operationId":"deleteCustomEntityDefinition","summary":"Delete a custom entity definition","description":"Delete a custom entity definition by its unique identifier. Only the definition (schema) is removed — existing records in custom_models_data are not cascade-deleted. You must delete all records first.","security":[{"Bearer":["customEntities:write"]}],"tags":["Custom Entity Definitions"],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"204":{"description":"Definition successfully deleted."},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict — the definition has existing records and cannot be deleted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/recruitment/applications/{id_token}":{"put":{"summary":"Submit an candidate application","description":"Submit a candidate application submission for any job posting.","tags":["Job Applications"],"parameters":[{"schema":{"type":"string","description":"The token used to identify the application relationship to a job, job post, etc"},"required":true,"description":"The token used to identify the application relationship to a job, job post, etc","name":"id_token","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"first_name":{"type":"string"},"last_name":{"type":"string"},"email":{"type":"string","format":"email"},"source":{"type":"string"},"phone_number":{"type":"string"},"cv":{"type":"object","properties":{"base64":{"type":"string"},"external_url":{"type":"string"}},"description":"The CV of the candidate. Provide base64 or external URL"},"screening_questions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"question":{"type":"string"},"answer":{"type":"array","items":{"type":"string"}}},"required":["question","answer"]}},"otherDocuments":{"type":"array","items":{"type":"object","properties":{"base64":{"type":"string"},"external_url":{"type":"string"},"type":{"type":"string","enum":["cover-letter","transcript","other"]}},"required":["type"]}}},"required":["first_name","last_name","email","cv"]}}}},"responses":{"200":{"description":"Create a new application","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"application_id":{"type":"string"},"candidate_id":{"type":"string"},"is_new_application":{"type":"boolean"},"is_new_candidate":{"type":"boolean"}},"required":["success","application_id","candidate_id","is_new_application","is_new_candidate"]}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}},"components":{"securitySchemes":{"Oauth2 Client Credentials":{"type":"oauth2","description":"App-scoped OAuth2 access. Use for server-to-server integrations where requests act as the OAuth client itself, not as a signed-in Quake user.","flows":{"clientCredentials":{"scopes":{"candidates:read":"Allow read access to candidates","candidates:write":"Allow write access to candidates","candidates:*":"Allow full access to candidates","applications:read":"Allow read access to applications","applications:write":"Allow write access to applications","applications:*":"Allow full access to applications","jobs:read":"Allow read access to jobs","jobs:write":"Allow write access to jobs","jobs:*":"Allow full access to jobs","jobLeads:read":"Allow read access to jobLeads","jobLeads:write":"Allow write access to jobLeads","jobLeads:*":"Allow full access to jobLeads","clients:read":"Allow read access to clients","clients:write":"Allow write access to clients","clients:*":"Allow full access to clients","contacts:read":"Allow read access to contacts","contacts:write":"Allow write access to contacts","contacts:*":"Allow full access to contacts","placements:read":"Allow read access to placements","placements:write":"Allow write access to placements","placements:*":"Allow full access to placements","jobSubmissions:read":"Allow read access to jobSubmissions","jobSubmissions:write":"Allow write access to jobSubmissions","jobSubmissions:*":"Allow full access to jobSubmissions","skills:read":"Allow read access to skills","skills:write":"Allow write access to skills","skills:*":"Allow full access to skills","tags:read":"Allow read access to tags","tags:write":"Allow write access to tags","tags:*":"Allow full access to tags","tasks:read":"Allow read access to tasks","tasks:write":"Allow write access to tasks","tasks:*":"Allow full access to tasks","notes:read":"Allow read access to notes","notes:write":"Allow write access to notes","notes:*":"Allow full access to notes","files:read":"Allow read access to files","files:write":"Allow write access to files","files:*":"Allow full access to files","linkAccounts:read":"Allow read access to linkAccounts","linkAccounts:write":"Allow write access to linkAccounts","linkAccounts:*":"Allow full access to linkAccounts","ai_agents:read":"Allow read access to ai_agents","ai_agents:write":"Allow write access to ai_agents","ai_agents:*":"Allow full access to ai_agents","agentChats:write":"Allow write access to agentChats","agentChats:*":"Allow full access to agentChats","automations:read":"Allow read access to automations","automations:write":"Allow write access to automations","automations:*":"Allow full access to automations","customEntities:read":"Allow read access to customEntities","customEntities:write":"Allow write access to customEntities","customEntities:*":"Allow full access to customEntities","integrations:read":"Allow read access to integrations","integrations:write":"Allow write access to integrations","integrations:*":"Allow full access to integrations","emailSyncSettings:read":"Allow read access to emailSyncSettings","emailSyncSettings:write":"Allow write access to emailSyncSettings","emailSyncSettings:*":"Allow full access to emailSyncSettings","users:read":"Allow read access to users","users:write":"Allow write access to users","users:*":"Allow full access to users","roles:read":"Allow read access to roles","roles:write":"Allow write access to roles","roles:*":"Allow full access to roles","permissions:read":"Allow read access to permissions","permissions:write":"Allow write access to permissions","permissions:*":"Allow full access to permissions","datasets:read":"Allow read access to datasets","datasets:write":"Allow write access to datasets","datasets:*":"Allow full access to datasets","access_groups:read":"Allow read access to access_groups","access_groups:write":"Allow write access to access_groups","access_groups:*":"Allow full access to access_groups","oauthClients:read":"Allow read access to oauthClients","oauthClients:write":"Allow write access to oauthClients","oauthClients:*":"Allow full access to oauthClients"},"tokenUrl":"/oauth/token"}}},"Oauth2 Authorization Code":{"type":"oauth2","description":"Authorization-code flow for Quake login. Start at /api/openapi/authorize. Use /oauth/session for delegated user sessions or /oauth/token for standard authorization-code token exchange.","flows":{"authorizationCode":{"authorizationUrl":"https://app.quake.dev/api/openapi/authorize","tokenUrl":"/oauth/token","scopes":{"candidates:read":"Allow read access to candidates","candidates:write":"Allow write access to candidates","candidates:*":"Allow full access to candidates","applications:read":"Allow read access to applications","applications:write":"Allow write access to applications","applications:*":"Allow full access to applications","jobs:read":"Allow read access to jobs","jobs:write":"Allow write access to jobs","jobs:*":"Allow full access to jobs","jobLeads:read":"Allow read access to jobLeads","jobLeads:write":"Allow write access to jobLeads","jobLeads:*":"Allow full access to jobLeads","clients:read":"Allow read access to clients","clients:write":"Allow write access to clients","clients:*":"Allow full access to clients","contacts:read":"Allow read access to contacts","contacts:write":"Allow write access to contacts","contacts:*":"Allow full access to contacts","placements:read":"Allow read access to placements","placements:write":"Allow write access to placements","placements:*":"Allow full access to placements","jobSubmissions:read":"Allow read access to jobSubmissions","jobSubmissions:write":"Allow write access to jobSubmissions","jobSubmissions:*":"Allow full access to jobSubmissions","skills:read":"Allow read access to skills","skills:write":"Allow write access to skills","skills:*":"Allow full access to skills","tags:read":"Allow read access to tags","tags:write":"Allow write access to tags","tags:*":"Allow full access to tags","tasks:read":"Allow read access to tasks","tasks:write":"Allow write access to tasks","tasks:*":"Allow full access to tasks","notes:read":"Allow read access to notes","notes:write":"Allow write access to notes","notes:*":"Allow full access to notes","files:read":"Allow read access to files","files:write":"Allow write access to files","files:*":"Allow full access to files","linkAccounts:read":"Allow read access to linkAccounts","linkAccounts:write":"Allow write access to linkAccounts","linkAccounts:*":"Allow full access to linkAccounts","ai_agents:read":"Allow read access to ai_agents","ai_agents:write":"Allow write access to ai_agents","ai_agents:*":"Allow full access to ai_agents","agentChats:write":"Allow write access to agentChats","agentChats:*":"Allow full access to agentChats","automations:read":"Allow read access to automations","automations:write":"Allow write access to automations","automations:*":"Allow full access to automations","customEntities:read":"Allow read access to customEntities","customEntities:write":"Allow write access to customEntities","customEntities:*":"Allow full access to customEntities","integrations:read":"Allow read access to integrations","integrations:write":"Allow write access to integrations","integrations:*":"Allow full access to integrations","emailSyncSettings:read":"Allow read access to emailSyncSettings","emailSyncSettings:write":"Allow write access to emailSyncSettings","emailSyncSettings:*":"Allow full access to emailSyncSettings","users:read":"Allow read access to users","users:write":"Allow write access to users","users:*":"Allow full access to users","roles:read":"Allow read access to roles","roles:write":"Allow write access to roles","roles:*":"Allow full access to roles","permissions:read":"Allow read access to permissions","permissions:write":"Allow write access to permissions","permissions:*":"Allow full access to permissions","datasets:read":"Allow read access to datasets","datasets:write":"Allow write access to datasets","datasets:*":"Allow full access to datasets","access_groups:read":"Allow read access to access_groups","access_groups:write":"Allow write access to access_groups","access_groups:*":"Allow full access to access_groups","oauthClients:read":"Allow read access to oauthClients","oauthClients:write":"Allow write access to oauthClients","oauthClients:*":"Allow full access to oauthClients"}}}}},"schemas":{"TokenResponse":{"type":"object","properties":{"access_token":{"type":"string"},"token_type":{"type":"string","enum":["Bearer"]},"expires_in":{"type":"number"},"scope":{"type":"string"}},"required":["access_token","token_type","expires_in","scope"]},"ErrorResponse":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"}},"required":["error","message"]},"TokenRequest":{"type":"object","properties":{"grant_type":{"type":"string","enum":["client_credentials","authorization_code"]},"client_id":{"type":"string"},"client_secret":{"type":"string"},"code":{"$ref":"#/components/schemas/Required when using authorization_code grant type"},"redirect_uri":{"$ref":"#/components/schemas/Required when using authorization_code grant type"},"code_verifier":{"$ref":"#/components/schemas/Required when using PKCE"},"scope":{"type":"string"}},"required":["grant_type"]},"Required when using authorization_code grant type":{"type":"string"},"Required when using PKCE":{"type":"string"},"DelegatedSessionTokenResponse":{"type":"object","properties":{"access_token":{"type":"string","description":"Bearer token for calling /core/* as the signed-in Quake user, filtered by both client scopes and dataset user permissions."},"refresh_token":{"type":"string","description":"Refresh token for rotating the delegated session. Refresh tokens are single-use after rotation."},"token_type":{"type":"string","enum":["Bearer"]},"expires_in":{"type":"number","description":"Access-token lifetime in seconds."},"session":{"$ref":"#/components/schemas/DelegatedSessionSummary"}},"required":["access_token","refresh_token","token_type","expires_in","session"]},"DelegatedSessionSummary":{"type":"object","properties":{"isLoggedIn":{"type":"boolean","enum":[true]},"authStage":{"type":"string","enum":["authenticated"]},"user":{"$ref":"#/components/schemas/DelegatedSessionUser"},"dataset":{"$ref":"#/components/schemas/DelegatedSessionDataset"},"slug":{"type":"string"},"mfa":{"$ref":"#/components/schemas/DelegatedSessionMfa"},"client":{"$ref":"#/components/schemas/DelegatedSessionClient"},"granted_scopes":{"type":"array","items":{"type":"string"}}},"required":["isLoggedIn","authStage","user","dataset","slug","mfa","client","granted_scopes"]},"DelegatedSessionUser":{"type":"object","properties":{"id":{"type":"string"},"user_dataset_id":{"type":"string"},"email":{"type":"string"},"name":{"type":["string","null"]},"image":{"type":["string","null"]},"role":{"type":["string","null"]},"permissions":{"type":"array","items":{"type":"object","properties":{"resource":{"type":"string"},"action":{"type":"string"},"active":{"type":"boolean"}},"required":["resource","action"]}}},"required":["id","user_dataset_id","email","name","image","role","permissions"]},"DelegatedSessionDataset":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"]},"DelegatedSessionMfa":{"type":"object","properties":{"enrolled":{"type":"boolean"},"passkeyCount":{"type":"number"}},"required":["enrolled","passkeyCount"]},"DelegatedSessionClient":{"type":"object","properties":{"id":{"type":["string","null"]},"client_id":{"type":["string","null"]},"kind":{"type":["string","null"],"enum":["db","chrome_extension",null]},"name":{"type":["string","null"]}},"required":["id","client_id","kind","name"]},"DelegatedSessionExchangeRequest":{"type":"object","properties":{"client_id":{"type":"string","description":"OAuth client id for the dataset-scoped client that initiated the delegated login."},"client_secret":{"type":"string","description":"Required for confidential clients. Omit for public or PKCE clients and send code_verifier instead."},"code":{"type":"string","description":"Authorization code returned from /api/openapi/authorize after the Quake user signs in."},"redirect_uri":{"type":"string","description":"Must exactly match the redirect_uri used during the authorize request."},"code_verifier":{"type":"string","description":"Required for PKCE or other public-client delegated flows."}},"required":["client_id","code","redirect_uri"]},"DelegatedSessionRefreshRequest":{"type":"object","properties":{"client_id":{"type":"string","description":"OAuth client id that owns the delegated session."},"client_secret":{"type":"string","description":"Required if the delegated session was created as a confidential-client flow. Omit for PKCE/public-client flows."},"refresh_token":{"type":"string","description":"Refresh token previously returned by /oauth/session or /oauth/session/refresh."}},"required":["client_id","refresh_token"]},"App":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":["string","null"]},"is_published":{"type":"boolean"},"logo_url":{"type":["string","null"]},"actions":{"type":"array","items":{"$ref":"#/components/schemas/AppDiscoveryActionSummary"}}},"required":["id","name","description","is_published","actions"],"additionalProperties":{}},"AppDiscoveryActionSummary":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"purpose":{"type":["string","null"]},"readable_name":{"type":"string"}},"required":["id","name","purpose","readable_name"]},"AppDiscoveryAction":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"readable_name":{"type":"string"},"input_schema":{"type":["array","null"],"items":{"$ref":"#/components/schemas/AppDiscoveryActionInputSchemaItem"}},"output_schema":{"allOf":[{"$ref":"#/components/schemas/AppDiscoveryJsonSchemaDefinition"},{"type":["object","null"]}]},"execution_endpoint":{"$ref":"#/components/schemas/AppDiscoveryExecutionEndpoint"}},"required":["id","name","readable_name","input_schema","output_schema","execution_endpoint"]},"AppDiscoveryActionInputSchemaItem":{"type":"object","properties":{"schema":{"$ref":"#/components/schemas/AppDiscoveryJsonSchemaDefinition"},"location":{"type":"string"},"arrayFormat":{"type":"string","enum":["comma","repeat","indices","brackets"]},"ui_schema":{"type":"object","properties":{},"additionalProperties":{}}},"required":["schema","location"]},"AppDiscoveryJsonSchemaDefinition":{"type":"object","properties":{},"additionalProperties":{}},"AppDiscoveryExecutionEndpoint":{"type":["object","null"],"properties":{"path":{"type":"string"},"method":{"type":"string"}},"required":["path","method"]},"AppDiscoverySchemaDefinitionDocument":{"type":"object","properties":{"input_schema":{"$ref":"#/components/schemas/AppDiscoveryJsonSchemaDefinition"},"output_schema":{"$ref":"#/components/schemas/AppDiscoveryJsonSchemaDefinition"},"execution_endpoint":{"$ref":"#/components/schemas/AppDiscoveryJsonSchemaDefinition"}},"required":["input_schema","output_schema","execution_endpoint"]},"JobListItem":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":["string","null"]},"client_id":{"type":["string","null"]},"client_name":{"type":["string","null"]},"title":{"type":["string","null"]},"code":{"type":["string","null"]},"description":{"type":["string","null"]},"location":{"type":["string","null"]},"salary":{"type":["string","null"]},"requirements":{"type":["string","null"]},"status":{"type":["string","null"]},"remote_id":{"type":["string","null"]},"meta":{"type":"object","additionalProperties":{}},"owner":{"type":["object","null"],"properties":{"id":{"type":"string"},"type":{"type":"string"}},"required":["id","type"]},"created_by":{"type":["object","null"],"properties":{"id":{"type":"string"},"type":{"type":"string"}},"required":["id","type"]},"tag_assignments":{"type":"array","items":{"$ref":"#/components/schemas/TagAssignment"}},"created_at":{"type":"string"},"updated_at":{"type":"string"},"dashboard_url":{"type":"string"}}},"TagAssignment":{"type":"object","properties":{"assignment_id":{"type":"string"},"source":{"type":"string"},"created_by":{"type":["object","null"],"additionalProperties":{}},"assigned_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]},"tag_definition_id":{"type":"string"},"key":{"type":"string"},"name":{"type":"string"},"description":{"type":["string","null"]},"tag_definition_status":{"type":"string"},"tag_value_id":{"type":"string"},"value":{"type":"string"},"normalized_value":{"type":"string"},"tag_value_status":{"type":"string"},"sort_order":{"type":"number"}},"required":["assignment_id","source","created_by","tag_definition_id","key","name","description","tag_definition_status","tag_value_id","value","normalized_value","tag_value_status","sort_order"]},"Job":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":["string","null"]},"client_id":{"type":["string","null"]},"client_name":{"type":["string","null"]},"title":{"type":["string","null"]},"code":{"type":["string","null"]},"description":{"type":["string","null"]},"location":{"type":["string","null"]},"salary":{"type":["string","null"]},"requirements":{"type":["string","null"]},"status":{"type":["string","null"]},"remote_id":{"type":["string","null"]},"meta":{"type":"object","additionalProperties":{}},"owner":{"type":["object","null"],"properties":{"id":{"type":"string"},"type":{"type":"string"}},"required":["id","type"]},"created_by":{"type":["object","null"],"properties":{"id":{"type":"string"},"type":{"type":"string"}},"required":["id","type"]},"tag_assignments":{"type":"array","items":{"$ref":"#/components/schemas/TagAssignment"}},"created_at":{"type":"string"},"updated_at":{"type":"string"},"dashboard_url":{"type":"string"}},"required":["id","dashboard_url"]},"JobCreate":{"type":"object","properties":{"client_id":{"type":"string","description":"Quake client UUID to link to this job"},"client_remote_id":{"type":"string","description":"Client remote_id. Resolved to a Quake client ID. Takes precedence over client_id"},"code":{"type":"string"},"title":{"type":"string"},"owner":{"type":"object","properties":{"id":{"type":"string","description":"Dataset user ID or email address of the owner"},"type":{"type":"string"}},"required":["id","type"]},"description":{"type":"string"},"location":{"type":"string"},"salary":{"type":"string"},"requirements":{"type":"string"},"status":{"type":"string"},"remote_id":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"job_types":{"type":"array","items":{"type":"string"}},"tag_assignments":{"type":"array","items":{"$ref":"#/components/schemas/TagAssignmentInput"},"description":"Complete tag assignment set for this record. When supplied on create, update, or upsert routes, it replaces existing tag assignments; omit it to leave existing assignments unchanged."},"meta":{"type":"object","additionalProperties":{}},"screening_questions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["text","date","single choice","multiple choice","Yes/No"],"default":"text"},"question":{"type":"string"},"description":{"type":"string"},"required":{"type":"boolean"},"min":{"type":"string"},"max":{"type":"string"},"options":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"}},"required":["label","value"]}},"knockout_answers":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"}},"required":["label","value"]}}},"required":["id","question"]}}},"required":["title"],"additionalProperties":false},"TagAssignmentInput":{"type":"object","properties":{"tag_definition_id":{"type":"string","description":"Tag definition ID"},"tag_value_id":{"type":"string","description":"Tag value ID to assign to the record"},"source":{"type":"string","description":"Optional assignment source. Defaults to manual."}},"required":["tag_definition_id","tag_value_id"],"additionalProperties":false},"JobUpsertResponse":{"type":"object","properties":{"operation":{"type":"string","enum":["created","updated"]},"record":{"$ref":"#/components/schemas/Job"}},"required":["operation","record"]},"JobUpsert":{"type":"object","properties":{"client_id":{"type":"string","description":"Quake client UUID to link to this job"},"client_remote_id":{"type":"string","description":"Client remote_id. Resolved to a Quake client ID. Takes precedence over client_id"},"code":{"type":"string"},"title":{"type":"string"},"owner":{"type":"object","properties":{"id":{"type":"string","description":"Dataset user ID or email address of the owner"},"type":{"type":"string"}},"required":["id","type"]},"description":{"type":"string"},"location":{"type":"string"},"salary":{"type":"string"},"requirements":{"type":"string"},"status":{"type":"string"},"remote_id":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"job_types":{"type":"array","items":{"type":"string"}},"tag_assignments":{"type":"array","items":{"$ref":"#/components/schemas/TagAssignmentInput"},"description":"Complete tag assignment set for this record. When supplied on create, update, or upsert routes, it replaces existing tag assignments; omit it to leave existing assignments unchanged."},"meta":{"type":"object","additionalProperties":{}},"screening_questions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["text","date","single choice","multiple choice","Yes/No"],"default":"text"},"question":{"type":"string"},"description":{"type":"string"},"required":{"type":"boolean"},"min":{"type":"string"},"max":{"type":"string"},"options":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"}},"required":["label","value"]}},"knockout_answers":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"}},"required":["label","value"]}}},"required":["id","question"]}}},"additionalProperties":false},"JobUpdate":{"type":"object","properties":{"title":{"type":"string"},"client_id":{"type":"string","description":"Quake client UUID to link to this job"},"client_remote_id":{"type":"string","description":"Client remote_id. Resolved to a Quake client ID. Takes precedence over client_id"},"owner":{"type":["object","null"],"properties":{"id":{"type":"string","description":"Dataset user ID or email address of the owner"},"type":{"type":"string"}},"required":["id","type"]},"description":{"type":"string"},"location":{"type":"string"},"salary":{"type":"string"},"requirements":{"type":"string"},"status":{"type":"string"},"code":{"type":"string"},"remote_id":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"job_types":{"type":"array","items":{"type":"string"}},"tag_assignments":{"type":"array","items":{"$ref":"#/components/schemas/TagAssignmentInput"},"description":"Complete tag assignment set for this record. When supplied on create, update, or upsert routes, it replaces existing tag assignments; omit it to leave existing assignments unchanged."},"meta":{"type":"object","additionalProperties":{}},"screening_questions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["text","date","single choice","multiple choice","Yes/No"],"default":"text"},"question":{"type":"string"},"description":{"type":"string"},"required":{"type":"boolean"},"min":{"type":"string"},"max":{"type":"string"},"options":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"}},"required":["label","value"]}},"knockout_answers":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"}},"required":["label","value"]}}},"required":["id","question"]}}},"additionalProperties":false},"Client":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":["string","null"]},"remote_id":{"type":["string","null"]},"name":{"type":"string"},"industry":{"type":["string","null"]},"notes":{"type":["string","null"]},"status":{"type":["string","null"]},"description":{"type":["string","null"]},"meta":{"type":"object","additionalProperties":{}},"address":{"type":"object","properties":{"type":{"type":["string","null"]},"label":{"type":["string","null"]},"line1":{"type":["string","null"]},"line2":{"type":["string","null"]},"city":{"type":["string","null"]},"state":{"type":["string","null"]},"country":{"type":["string","null"]}}},"urls":{"type":"array","items":{"type":"object","properties":{"icon":{"type":["string","null"]},"label":{"type":["string","null"]},"url":{"type":["string","null"]},"source":{"type":["string","null"]}}}},"created_at":{"type":"string"},"updated_at":{"type":"string"},"tag_assignments":{"type":"array","items":{"$ref":"#/components/schemas/TagAssignment"}},"dashboard_url":{"type":"string"}},"required":["id","dataset_id","name","dashboard_url"]},"ClientCreate":{"type":"object","properties":{"name":{"type":"string"},"remote_id":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"industry":{"type":"string"},"notes":{"type":"string"},"status":{"type":"string"},"meta":{"type":"object","additionalProperties":{}},"tag_assignments":{"type":"array","items":{"$ref":"#/components/schemas/TagAssignmentInput"},"description":"Complete tag assignment set for this record. When supplied on create, update, or upsert routes, it replaces existing tag assignments; omit it to leave existing assignments unchanged."},"contacts":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"},"isPrimary":{"type":"boolean"}},"required":["label","value","isPrimary"]}},"address":{"type":"object","properties":{"type":{"type":["string","null"]},"label":{"type":["string","null"]},"line1":{"type":["string","null"]},"line2":{"type":["string","null"]},"city":{"type":["string","null"]},"state":{"type":["string","null"]},"country":{"type":["string","null"]}}},"urls":{"type":"array","items":{"type":"object","properties":{"icon":{"type":["string","null"]},"label":{"type":["string","null"]},"url":{"type":["string","null"]},"source":{"type":["string","null"]}}}},"description":{"type":"string"}},"required":["name"],"additionalProperties":false},"ClientUpsertResponse":{"type":"object","properties":{"operation":{"type":"string","enum":["created","updated"]},"record":{"$ref":"#/components/schemas/Client"}},"required":["operation","record"]},"ClientUpsert":{"allOf":[{"$ref":"#/components/schemas/ClientCreate"},{"type":"object","properties":{"idempotency_key":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]}}},"required":["idempotency_key"],"additionalProperties":false}]},"ClientUpdate":{"type":"object","properties":{"name":{"type":"string"},"remote_id":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"industry":{"type":"string"},"notes":{"type":"string"},"status":{"type":"string"},"meta":{"type":"object","additionalProperties":{}},"tag_assignments":{"type":"array","items":{"$ref":"#/components/schemas/TagAssignmentInput"},"description":"Complete tag assignment set for this record. When supplied on create, update, or upsert routes, it replaces existing tag assignments; omit it to leave existing assignments unchanged."},"contacts":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"},"isPrimary":{"type":"boolean"}},"required":["label","value","isPrimary"]}},"address":{"type":"object","properties":{"type":{"type":["string","null"]},"label":{"type":["string","null"]},"line1":{"type":["string","null"]},"line2":{"type":["string","null"]},"city":{"type":["string","null"]},"state":{"type":["string","null"]},"country":{"type":["string","null"]}}},"urls":{"type":"array","items":{"type":"object","properties":{"icon":{"type":["string","null"]},"label":{"type":["string","null"]},"url":{"type":["string","null"]},"source":{"type":["string","null"]}}}},"description":{"type":"string"}},"additionalProperties":false},"CandidateListItem":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":["string","null"]},"first_name":{"type":"string"},"last_name":{"type":"string"},"email":{"type":["string","null"]},"remote_id":{"type":["string","null"]},"phone":{"type":["string","null"]},"description":{"type":["string","null"]},"location":{"type":["string","null"]},"rate":{"type":["object","null"],"properties":{"min":{"type":"string"},"expected":{"type":"string"},"current":{"type":"string"},"currency":{"type":"string"}}},"employment_preference":{"type":["string","null"]},"status":{"type":["string","null"]},"willing_to_relocate":{"type":["boolean","null"]},"profile_urls":{"type":"array","items":{"type":"object","properties":{"icon":{"type":["string","null"]},"label":{"type":["string","null"]},"url":{"type":["string","null"]},"source":{"type":["string","null"]},"type":{"type":["string","null"]},"external_id":{"type":["string","null"]}}}},"skills":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"object","additionalProperties":{}},{"type":"null"}]},"experience":{"type":["array","null"],"items":{"type":"object","properties":{"company":{"type":"string"},"title":{"type":"string"},"employment_type":{"type":"string"},"start_date":{"type":"string"},"end_date":{"type":"string"},"description":{"type":"string"},"rate":{"type":["string","null"]}}}},"education":{"type":["array","null"],"items":{"type":"object","properties":{"institution":{"type":"string"},"degree":{"type":"string"},"field_of_study":{"type":"string"},"start_date":{"type":"string"},"end_date":{"type":"string"},"fieldOfStudy":{"type":"string"},"graduationYear":{"type":"string"}}}},"notes":{"type":["string","null"]},"meta":{"type":"object","additionalProperties":{}},"photo_url":{"type":["object","null"],"properties":{"url":{"type":"string"},"key":{"type":"string"}}},"created_at":{"type":"string"},"updated_at":{"type":"string"},"primary_owner":{"type":["string","null"],"format":"uuid"},"secondary_owners":{"type":"array","items":{"type":"string","format":"uuid"}},"tag_assignments":{"type":"array","items":{"$ref":"#/components/schemas/TagAssignment"}},"dashboard_url":{"type":"string"}}},"Candidate":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":["string","null"]},"first_name":{"type":"string"},"last_name":{"type":"string"},"email":{"type":["string","null"]},"remote_id":{"type":["string","null"]},"phone":{"type":["string","null"]},"description":{"type":["string","null"]},"location":{"type":["string","null"]},"rate":{"type":["object","null"],"properties":{"min":{"type":"string"},"expected":{"type":"string"},"current":{"type":"string"},"currency":{"type":"string"}}},"employment_preference":{"type":["string","null"]},"status":{"type":["string","null"]},"willing_to_relocate":{"type":["boolean","null"]},"profile_urls":{"type":"array","items":{"type":"object","properties":{"icon":{"type":["string","null"]},"label":{"type":["string","null"]},"url":{"type":["string","null"]},"source":{"type":["string","null"]},"type":{"type":["string","null"]},"external_id":{"type":["string","null"]}}}},"skills":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"object","additionalProperties":{}},{"type":"null"}]},"experience":{"type":["array","null"],"items":{"type":"object","properties":{"company":{"type":"string"},"title":{"type":"string"},"employment_type":{"type":"string"},"start_date":{"type":"string"},"end_date":{"type":"string"},"description":{"type":"string"},"rate":{"type":["string","null"]}}}},"education":{"type":["array","null"],"items":{"type":"object","properties":{"institution":{"type":"string"},"degree":{"type":"string"},"field_of_study":{"type":"string"},"start_date":{"type":"string"},"end_date":{"type":"string"},"fieldOfStudy":{"type":"string"},"graduationYear":{"type":"string"}}}},"notes":{"type":["string","null"]},"meta":{"type":"object","additionalProperties":{}},"photo_url":{"type":["object","null"],"properties":{"url":{"type":"string"},"key":{"type":"string"}}},"created_at":{"type":"string"},"updated_at":{"type":"string"},"primary_owner":{"type":["string","null"],"format":"uuid"},"secondary_owners":{"type":"array","items":{"type":"string","format":"uuid"}},"tag_assignments":{"type":"array","items":{"$ref":"#/components/schemas/TagAssignment"}},"dashboard_url":{"type":"string"}},"required":["id","dataset_id","first_name","last_name","primary_owner","secondary_owners","dashboard_url"]},"CandidateCreate":{"type":"object","properties":{"first_name":{"type":"string"},"last_name":{"type":"string"},"email":{"type":"string","format":"email"},"remote_id":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"phone":{"type":"string"},"description":{"type":"string"},"location":{"type":"string"},"rate":{"type":"object","properties":{"min":{"type":"string"},"expected":{"type":"string"},"current":{"type":"string"},"currency":{"type":"string"}}},"employment_preference":{"type":"string"},"status":{"type":"string"},"willing_to_relocate":{"type":"boolean"},"skills":{"type":"array","items":{"type":"string"}},"categories":{"type":"array","items":{"type":"string"}},"tag_assignments":{"type":"array","items":{"$ref":"#/components/schemas/TagAssignmentInput"},"description":"Complete tag assignment set for this record. When supplied on create, update, or upsert routes, it replaces existing tag assignments; omit it to leave existing assignments unchanged."},"experience":{"type":"array","items":{"type":"object","properties":{"company":{"type":"string"},"title":{"type":"string"},"employment_type":{"type":"string"},"start_date":{"type":"string"},"end_date":{"type":"string"},"description":{"type":"string"},"rate":{"type":["string","null"]}}}},"education":{"type":"array","items":{"type":"object","properties":{"institution":{"type":"string"},"degree":{"type":"string"},"fieldOfStudy":{"type":"string"},"graduationYear":{"type":"string"}},"required":["institution","degree"]}},"profile_urls":{"type":"array","items":{"type":"object","properties":{"icon":{"type":["string","null"]},"label":{"type":["string","null"]},"url":{"type":["string","null"]},"source":{"type":["string","null"]},"type":{"type":["string","null"]},"external_id":{"type":["string","null"]}}}},"meta":{"type":"object","additionalProperties":{}},"photo_url":{"type":"object","properties":{"url":{"type":"string"},"key":{"type":"string"}}},"cvs":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"md5":{"type":"string","description":"Reference to an already-uploaded resume document. No upload is performed."}},"required":["md5"]},{"type":"object","properties":{"base64":{"type":"string","description":"Resume content as base64 or data URL"},"url":{"type":"string","format":"uri","description":"Resume document URL"},"type":{"type":"string"},"original_filename":{"type":"string"},"description":{"type":"string"},"parseWithAI":{"type":"boolean"},"category":{"type":"string","enum":["resume"],"description":"Optional. Ignored by the handler, which always stores cvs as resume documents."},"autoUpdateCandidate":{"type":"boolean"}}}]}},"primary_owner":{"type":"string","description":"Dataset user UUID or email address of the primary owner"},"secondary_owners":{"type":"array","items":{"type":"string"},"description":"Array of dataset user UUIDs or email addresses for secondary owners"}},"required":["first_name","last_name"],"additionalProperties":false},"CandidateUpdate":{"type":"object","properties":{"first_name":{"type":"string"},"last_name":{"type":"string"},"email":{"type":"string","format":"email"},"remote_id":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"phone":{"type":"string"},"description":{"type":"string"},"location":{"type":"string"},"rate":{"type":"object","properties":{"min":{"type":"string"},"expected":{"type":"string"},"current":{"type":"string"},"currency":{"type":"string"}}},"employment_preference":{"type":"string"},"status":{"type":"string"},"willing_to_relocate":{"type":"boolean"},"skills":{"type":"array","items":{"type":"string"}},"categories":{"type":"array","items":{"type":"string"}},"tag_assignments":{"type":"array","items":{"$ref":"#/components/schemas/TagAssignmentInput"},"description":"Complete tag assignment set for this record. When supplied on create, update, or upsert routes, it replaces existing tag assignments; omit it to leave existing assignments unchanged."},"experience":{"type":"array","items":{"type":"object","properties":{"company":{"type":"string"},"title":{"type":"string"},"employment_type":{"type":"string"},"start_date":{"type":"string"},"end_date":{"type":"string"},"description":{"type":"string"},"rate":{"type":["string","null"]}}}},"education":{"type":"array","items":{"type":"object","properties":{"institution":{"type":"string"},"degree":{"type":"string"},"fieldOfStudy":{"type":"string"},"graduationYear":{"type":"string"}},"required":["institution","degree"]}},"profile_urls":{"type":"array","items":{"type":"object","properties":{"icon":{"type":["string","null"]},"label":{"type":["string","null"]},"url":{"type":["string","null"]},"source":{"type":["string","null"]},"type":{"type":["string","null"]},"external_id":{"type":["string","null"]}}}},"meta":{"type":"object","additionalProperties":{}},"photo_url":{"type":"object","properties":{"url":{"type":"string"},"key":{"type":"string"}}},"cvs":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"md5":{"type":"string","description":"Reference to an already-uploaded resume document. No upload is performed."}},"required":["md5"]},{"type":"object","properties":{"base64":{"type":"string","description":"Resume content as base64 or data URL"},"url":{"type":"string","format":"uri","description":"Resume document URL"},"type":{"type":"string"},"original_filename":{"type":"string"},"description":{"type":"string"},"parseWithAI":{"type":"boolean"},"category":{"type":"string","enum":["resume"],"description":"Optional. Ignored by the handler, which always stores cvs as resume documents."},"autoUpdateCandidate":{"type":"boolean"}}}]}},"primary_owner":{"type":["string","null"],"description":"Dataset user UUID or email address of the primary owner. Null to clear."},"secondary_owners":{"type":["array","null"],"items":{"type":"string"},"description":"Array of dataset user UUIDs or email addresses for secondary owners"}},"additionalProperties":false},"CandidateDocumentListItem":{"allOf":[{"$ref":"#/components/schemas/CandidateDocument"},{"type":"object","properties":{"file_id":{"type":["string","null"]},"text":{"type":["string","null"]},"parsed_at":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["created_at","updated_at"]}]},"CandidateDocument":{"type":"object","properties":{"id":{"type":"string"},"key":{"type":"string"},"type":{"type":"string"},"size":{"type":"number"},"original_filename":{"type":"string"},"description":{"type":["string","null"]},"category":{"type":"string","enum":["resume","cover_letter","referral","other"]},"md5":{"type":"string"},"parsed":{"type":"object","additionalProperties":{}},"reason":{"type":["string","null"]},"incomplete_output":{"type":["string","null"]},"parsing_status":{"type":"string","enum":["in-progress","idle","failed","successful","skipped","incomplete"]},"parsing_started_at":{"type":["string","null"]},"parsing_ended_at":{"type":["string","null"]}},"required":["key","type","size","original_filename","md5","parsing_status"]},"CandidateDocumentPresignedUrl":{"type":"object","properties":{"url":{"type":"string","format":"uri"}},"required":["url"]},"CandidateDocumentsUpload":{"type":"object","properties":{"documents":{"type":"array","items":{"$ref":"#/components/schemas/CandidateDocumentUploadInput"},"minItems":1}},"required":["documents"],"additionalProperties":false},"CandidateDocumentUploadInput":{"type":"object","properties":{"base64":{"type":"string","description":"Document content as base64 or data URL"},"url":{"type":"string","format":"uri","description":"Document URL"},"type":{"type":"string","description":"Document MIME type"},"original_filename":{"type":"string","description":"Original filename"},"description":{"type":"string","description":"Document description"},"category":{"type":"string","enum":["auto","resume","cover_letter","referral","other"]},"parseWithAI":{"type":"boolean","default":true,"description":"Whether Quake should parse the document with AI after upload"},"autoUpdateCandidate":{"type":"boolean","default":false,"description":"Whether Quake should auto-update candidate fields from parsed document data"},"parsed":{"type":"object","additionalProperties":{},"description":"Optional pre-parsed payload. If provided, AI parsing is skipped."}}},"CandidateUpsert":{"type":"object","properties":{"first_name":{"type":"string"},"last_name":{"type":"string"},"email":{"type":"string","format":"email"},"remote_id":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"phone":{"type":"string"},"description":{"type":"string"},"location":{"type":"string"},"rate":{"type":"object","properties":{"min":{"type":"string"},"expected":{"type":"string"},"current":{"type":"string"},"currency":{"type":"string"}}},"employment_preference":{"type":"string"},"status":{"type":"string"},"willing_to_relocate":{"type":"boolean"},"skills":{"type":"array","items":{"type":"string"}},"categories":{"type":"array","items":{"type":"string"}},"tag_assignments":{"type":"array","items":{"$ref":"#/components/schemas/TagAssignmentInput"},"description":"Complete tag assignment set for this record. When supplied on create, update, or upsert routes, it replaces existing tag assignments; omit it to leave existing assignments unchanged."},"experience":{"type":"array","items":{"type":"object","properties":{"company":{"type":"string"},"title":{"type":"string"},"employment_type":{"type":"string"},"start_date":{"type":"string"},"end_date":{"type":"string"},"description":{"type":"string"},"rate":{"type":["string","null"]}}}},"education":{"type":"array","items":{"type":"object","properties":{"institution":{"type":"string"},"degree":{"type":"string"},"fieldOfStudy":{"type":"string"},"graduationYear":{"type":"string"}},"required":["institution","degree"]}},"profile_urls":{"type":"array","items":{"type":"object","properties":{"icon":{"type":["string","null"]},"label":{"type":["string","null"]},"url":{"type":["string","null"]},"source":{"type":["string","null"]},"type":{"type":["string","null"]},"external_id":{"type":["string","null"]}}}},"meta":{"type":"object","additionalProperties":{}},"photo_url":{"type":"object","properties":{"url":{"type":"string"},"key":{"type":"string"}}},"cvs":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"md5":{"type":"string","description":"Reference to an already-uploaded resume document. No upload is performed."}},"required":["md5"]},{"type":"object","properties":{"base64":{"type":"string","description":"Resume content as base64 or data URL"},"url":{"type":"string","format":"uri","description":"Resume document URL"},"type":{"type":"string"},"original_filename":{"type":"string"},"description":{"type":"string"},"parseWithAI":{"type":"boolean"},"category":{"type":"string","enum":["resume"],"description":"Optional. Ignored by the handler, which always stores cvs as resume documents."},"autoUpdateCandidate":{"type":"boolean"}}}]}},"primary_owner":{"type":"string","description":"Dataset user UUID or email address of the primary owner"},"secondary_owners":{"type":"array","items":{"type":"string"},"description":"Array of dataset user UUIDs or email addresses for secondary owners"},"idempotency_key":{"type":"string","description":"When provided, deduplicates on meta.attributes[idempotency_key] instead of email/remote_id. The value must be present in the meta.attributes map."}},"additionalProperties":false},"Contact":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":["string","null"]},"remote_id":{"type":["string","null"]},"full_name":{"type":["string","null"]},"first_name":{"type":["string","null"]},"last_name":{"type":["string","null"]},"preferred_name":{"type":["string","null"]},"relationship_stage":{"type":["string","null"]},"lifecycle_stage":{"type":["string","null"]},"status":{"type":["string","null"]},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"value":{"type":"string"},"label":{"type":["string","null"]},"type":{"type":["string","null"]},"category":{"type":["string","null"]},"isPrimary":{"type":["boolean","null"]},"isVerified":{"type":["boolean","null"]},"source":{"type":["string","null"]},"confidence":{"type":["number","null"]},"extension":{"type":["string","null"]},"lastValidatedAt":{"type":["string","null"]},"note":{"type":["string","null"]}},"required":["value"]}},"phones":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"value":{"type":"string"},"label":{"type":["string","null"]},"type":{"type":["string","null"]},"category":{"type":["string","null"]},"isPrimary":{"type":["boolean","null"]},"isVerified":{"type":["boolean","null"]},"source":{"type":["string","null"]},"confidence":{"type":["number","null"]},"extension":{"type":["string","null"]},"lastValidatedAt":{"type":["string","null"]},"note":{"type":["string","null"]}},"required":["value"]}},"addresses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":["string","null"]},"label":{"type":["string","null"]},"line1":{"type":["string","null"]},"line2":{"type":["string","null"]},"city":{"type":["string","null"]},"region":{"type":["string","null"]},"country":{"type":["string","null"]},"postalCode":{"type":["string","null"]},"latitude":{"type":["number","null"]},"longitude":{"type":["number","null"]},"note":{"type":["string","null"]}}}},"profile_urls":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"url":{"type":["string","null"]},"label":{"type":["string","null"]},"type":{"type":["string","null"]},"source":{"type":["string","null"]}}}},"meta":{"type":"object","additionalProperties":{}},"owner":{"type":"object","properties":{"id":{"type":"string","description":"Dataset user ID or email address of the owner"},"type":{"type":"string","enum":["user"]},"secondary_owners":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Dataset user ID or email address"},"type":{"type":"string","enum":["user"]}},"required":["id","type"]}}},"required":["id","type"]},"created_by":{"type":["object","null"],"properties":{"id":{"type":"string"},"type":{"type":"string"}},"required":["id","type"]},"last_modified_by":{"type":["object","null"],"properties":{"id":{"type":"string"},"type":{"type":"string"}},"required":["id","type"]},"created_at":{"type":"string"},"updated_at":{"type":"string"},"tag_assignments":{"type":"array","items":{"$ref":"#/components/schemas/TagAssignment"}},"dashboard_url":{"type":"string"}},"required":["id","dashboard_url"]},"ContactCreate":{"type":"object","properties":{"full_name":{"type":"string"},"remote_id":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"first_name":{"type":"string"},"last_name":{"type":"string"},"preferred_name":{"type":"string"},"relationship_stage":{"type":"string"},"lifecycle_stage":{"type":"string"},"status":{"type":"string"},"tag_assignments":{"type":"array","items":{"$ref":"#/components/schemas/TagAssignmentInput"},"description":"Complete tag assignment set for this record. When supplied on create, update, or upsert routes, it replaces existing tag assignments; omit it to leave existing assignments unchanged."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"value":{"type":"string"},"label":{"type":["string","null"]},"type":{"type":["string","null"]},"category":{"type":["string","null"]},"isPrimary":{"type":["boolean","null"]},"isVerified":{"type":["boolean","null"]},"source":{"type":["string","null"]},"confidence":{"type":["number","null"]},"extension":{"type":["string","null"]},"lastValidatedAt":{"type":["string","null"]},"note":{"type":["string","null"]}},"required":["value"]}},"phones":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"value":{"type":"string"},"label":{"type":["string","null"]},"type":{"type":["string","null"]},"category":{"type":["string","null"]},"isPrimary":{"type":["boolean","null"]},"isVerified":{"type":["boolean","null"]},"source":{"type":["string","null"]},"confidence":{"type":["number","null"]},"extension":{"type":["string","null"]},"lastValidatedAt":{"type":["string","null"]},"note":{"type":["string","null"]}},"required":["value"]}},"addresses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":["string","null"]},"label":{"type":["string","null"]},"line1":{"type":["string","null"]},"line2":{"type":["string","null"]},"city":{"type":["string","null"]},"region":{"type":["string","null"]},"country":{"type":["string","null"]},"postalCode":{"type":["string","null"]},"latitude":{"type":["number","null"]},"longitude":{"type":["number","null"]},"note":{"type":["string","null"]}}}},"profile_urls":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"url":{"type":["string","null"]},"label":{"type":["string","null"]},"type":{"type":["string","null"]},"source":{"type":["string","null"]}}}},"meta":{"type":"object","additionalProperties":{}},"clients":{"type":"array","items":{"type":"string","format":"uuid"}},"categories":{"type":"array","items":{"type":"string"}},"owner":{"type":"object","properties":{"id":{"type":"string","description":"Dataset user ID or email address of the owner"},"type":{"type":"string","enum":["user"]},"secondary_owners":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Dataset user ID or email address"},"type":{"type":"string","enum":["user"]}},"required":["id","type"]}}},"required":["id","type"]}},"required":["owner"],"additionalProperties":false},"ContactUpsertResponse":{"type":"object","properties":{"operation":{"type":"string","enum":["created","updated"]},"record":{"$ref":"#/components/schemas/Contact"}},"required":["operation","record"]},"ContactUpsert":{"allOf":[{"$ref":"#/components/schemas/ContactCreate"},{"type":"object","properties":{"idempotency_key":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]}}},"required":["idempotency_key"],"additionalProperties":false}]},"ContactUpdate":{"type":"object","properties":{"full_name":{"type":"string"},"remote_id":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"first_name":{"type":"string"},"last_name":{"type":"string"},"preferred_name":{"type":"string"},"relationship_stage":{"type":"string"},"lifecycle_stage":{"type":"string"},"status":{"type":"string"},"tag_assignments":{"type":"array","items":{"$ref":"#/components/schemas/TagAssignmentInput"},"description":"Complete tag assignment set for this record. When supplied on create, update, or upsert routes, it replaces existing tag assignments; omit it to leave existing assignments unchanged."},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"value":{"type":"string"},"label":{"type":["string","null"]},"type":{"type":["string","null"]},"category":{"type":["string","null"]},"isPrimary":{"type":["boolean","null"]},"isVerified":{"type":["boolean","null"]},"source":{"type":["string","null"]},"confidence":{"type":["number","null"]},"extension":{"type":["string","null"]},"lastValidatedAt":{"type":["string","null"]},"note":{"type":["string","null"]}},"required":["value"]}},"phones":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"value":{"type":"string"},"label":{"type":["string","null"]},"type":{"type":["string","null"]},"category":{"type":["string","null"]},"isPrimary":{"type":["boolean","null"]},"isVerified":{"type":["boolean","null"]},"source":{"type":["string","null"]},"confidence":{"type":["number","null"]},"extension":{"type":["string","null"]},"lastValidatedAt":{"type":["string","null"]},"note":{"type":["string","null"]}},"required":["value"]}},"addresses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":["string","null"]},"label":{"type":["string","null"]},"line1":{"type":["string","null"]},"line2":{"type":["string","null"]},"city":{"type":["string","null"]},"region":{"type":["string","null"]},"country":{"type":["string","null"]},"postalCode":{"type":["string","null"]},"latitude":{"type":["number","null"]},"longitude":{"type":["number","null"]},"note":{"type":["string","null"]}}}},"profile_urls":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"url":{"type":["string","null"]},"label":{"type":["string","null"]},"type":{"type":["string","null"]},"source":{"type":["string","null"]}}}},"meta":{"type":"object","additionalProperties":{}},"clients":{"type":"array","items":{"type":"string","format":"uuid"}},"categories":{"type":"array","items":{"type":"string"}},"owner":{"type":"object","properties":{"id":{"type":"string","description":"Dataset user ID or email address of the owner"},"type":{"type":"string","enum":["user"]},"secondary_owners":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Dataset user ID or email address"},"type":{"type":"string","enum":["user"]}},"required":["id","type"]}}},"required":["id","type"]}},"additionalProperties":false},"CustomEntityRecordList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CustomEntityRecord"}},"total":{"type":"number"},"page":{"type":"number"},"pageSize":{"type":"number"}},"required":["data","total","page","pageSize"]},"CustomEntityRecord":{"type":"object","properties":{"id":{"type":"string"},"custom_entity_id":{"type":"string"},"data":{"type":"object","additionalProperties":{},"description":"Key-value pairs representing the custom attributes of the record. Keys must be attribute IDs (Not the name) `{ \"id\": \"value\" }`"},"owner":{"$ref":"#/components/schemas/CustomEntityRecordOwner"},"created_by":{"type":["object","null"],"properties":{"type":{"type":"string"},"id":{"type":"string"}},"required":["type","id"],"additionalProperties":{}},"created_at":{"type":"string"},"updated_at":{"type":"string"},"dashboard_url":{"type":"string"}},"required":["id","custom_entity_id","data","owner","created_by","created_at","updated_at","dashboard_url"]},"CustomEntityRecordOwner":{"type":["object","null"],"properties":{"type":{"type":"string","enum":["user"]},"id":{"type":"string","format":"uuid"},"secondary_owners":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["user"]},"id":{"type":"string","format":"uuid"}},"required":["type","id"]}}},"required":["type","id"]},"CustomEntityRecordCreate":{"type":"object","properties":{"data":{"type":"object","additionalProperties":{},"description":"Key-value pairs representing the custom attributes of the record. Keys must be attribute IDs (Not the name) `{ \"id\": \"value\" }`"},"owner":{"$ref":"#/components/schemas/CustomEntityRecordOwner"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["data","owner"],"additionalProperties":false},"CustomEntityRecordUpdate":{"type":"object","properties":{"data":{"type":"object","additionalProperties":{},"description":"Key-value pairs representing the custom attributes of the record. Keys must be attribute IDs (Not the name) `{ \"id\": \"value\" }`"},"owner":{"$ref":"#/components/schemas/CustomEntityRecordOwner"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":false},"SearchResponse":{"type":"array","items":{"$ref":"#/components/schemas/SearchResult"}},"SearchResult":{"type":"object","properties":{"id":{"type":"string"},"entity":{"type":"string"},"score":{"type":"number"},"content":{"type":"object","additionalProperties":{}}},"required":["id","entity","score","content"]},"SearchRequest":{"type":"object","properties":{"entities":{"type":"array","items":{"type":"string","enum":["recruitment_jobs","recruitment_clients","recruitment_candidates","recruitment_applications","contacts"]},"minItems":1},"search_query":{"type":"string","minLength":1}},"required":["entities","search_query"]},"DatasetUser":{"type":"object","properties":{"id":{"type":"string"},"user_id":{"type":"string"},"dataset_id":{"type":["string","null"]},"role":{"type":"string"},"role_id":{"type":["string","null"]},"remote_id":{"type":["string","null"]},"profile_photo":{"type":["string","null"]},"first_name":{"type":["string","null"]},"middle_name":{"type":["string","null"]},"last_name":{"type":["string","null"]},"notification_email":{"type":["string","null"]},"phone_numbers":{"type":["array","null"],"items":{"type":"object","properties":{"type":{"type":"string"},"number":{"type":"string"},"is_primary":{"type":"boolean"}},"required":["type","number","is_primary"]}},"is_verified":{"type":["boolean","null"]},"primary_access_group_id":{"type":["string","null"]},"deleted_at":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"},"email":{"type":["string","null"]},"name":{"type":["string","null"]},"username":{"type":["string","null"]},"is_active":{"type":["boolean","null"]},"dataset_is_active":{"type":["boolean","null"]}},"required":["id","user_id","dataset_id","role","role_id","remote_id","profile_photo","first_name","middle_name","last_name","notification_email","phone_numbers","is_verified","primary_access_group_id","deleted_at","created_at","updated_at","email","name","username","is_active","dataset_is_active"]},"UserCreate":{"type":"object","properties":{"email":{"type":"string","maxLength":320,"format":"email","description":"Email address for the dataset user."},"first_name":{"type":"string","minLength":1,"maxLength":255},"last_name":{"type":"string","maxLength":255},"remote_id":{"type":"string","minLength":1,"description":"External record ID for this dataset user."},"role_id":{"type":"string","minLength":1,"description":"Role ID to assign to the user. Defaults to recruiter."}},"required":["email"]},"UserUpdate":{"type":"object","properties":{"first_name":{"type":["string","null"],"maxLength":100},"middle_name":{"type":["string","null"],"maxLength":100},"last_name":{"type":["string","null"],"maxLength":100},"notification_email":{"type":["string","null"],"maxLength":320,"format":"email"},"remote_id":{"type":["string","null"],"minLength":1},"phone_numbers":{"type":["array","null"],"items":{"type":"object","properties":{"type":{"type":"string"},"number":{"type":"string"},"is_primary":{"type":"boolean"}},"required":["type","number","is_primary"]},"maxItems":20},"profile_photo":{"type":["string","null"],"maxLength":2048,"format":"uri"},"is_active":{"type":["boolean","null"]},"is_verified":{"type":["boolean","null"]},"role_id":{"type":"string","minLength":1,"description":"Role ID to assign to the user."}}},"OpenAPIAiAgent":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":["string","null"]},"custom_instructions":{"type":["string","null"]},"enabled_tools":{"type":"array","items":{"type":"string"}},"availableTools":{"type":"array","items":{"type":"string"}},"is_active":{"type":"boolean"},"llm_model":{"type":"string"},"owners":{"type":"array","items":{"type":"string"}},"dataset_id":{"type":["string","null"]},"created_by":{"$ref":"#/components/schemas/OpenAPIAiAgentBeneficiary"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"prompt_starters":{"type":"array","items":{"$ref":"#/components/schemas/OpenAPIAiAgentPromptStarter"}}},"required":["id","name","description","custom_instructions","enabled_tools","availableTools","is_active","llm_model","owners","dataset_id","created_by","created_at","updated_at","prompt_starters"]},"OpenAPIAiAgentBeneficiary":{"type":["object","null"],"properties":{},"additionalProperties":{}},"OpenAPIAiAgentPromptStarter":{"type":"object","properties":{"label":{"type":"string"},"prompt":{"type":"string"}},"required":["label","prompt"]},"OpenAPIAiConversationSummary":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":"string"},"name":{"type":"string"},"created_by":{"$ref":"#/components/schemas/OpenAPIAiConversationBeneficiary"},"created_by_name":{"type":["string","null"]},"created_by_avatar":{"type":["string","null"]},"is_shared":{"type":"boolean"},"llm_model":{"type":["string","null"]},"mode":{"type":"string","enum":["thinking","fast"]},"project_id":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","dataset_id","name","created_by","created_by_name","created_by_avatar","is_shared","llm_model","mode","project_id","created_at","updated_at"]},"OpenAPIAiConversationBeneficiary":{"type":["object","null"],"properties":{},"additionalProperties":{}},"OpenAPIAiConversationHistoryMessage":{"type":"object","properties":{"id":{"type":"string"},"role":{"type":"string"},"content":{"type":"string"},"type":{"type":"string"},"meta":{},"tools":{"type":"array","items":{}},"llm_model":{"type":["string","null"]},"files":{"type":"array","items":{"$ref":"#/components/schemas/OpenAPIAiConversationHistoryFile"}},"created_at":{"type":"string"},"created_by":{"$ref":"#/components/schemas/OpenAPIAiConversationBeneficiary"},"created_by_name":{"type":["string","null"]},"created_by_avatar":{"type":["string","null"]},"created_by_agent_name":{"type":["string","null"]}},"required":["id","role","content","type","created_at","created_by","created_by_name","created_by_avatar","created_by_agent_name"]},"OpenAPIAiConversationHistoryFile":{"type":"object","properties":{"id":{"type":"string"},"file_name":{"type":"string"},"file_size":{"type":"number"},"mime_type":{"type":"string"},"file_extension":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","file_name","file_size","mime_type","file_extension","created_at","updated_at"]},"OpenAPIAiConversationUploadUrlsResponse":{"type":"object","properties":{"files":{"type":"array","items":{"$ref":"#/components/schemas/OpenAPIAiConversationUploadUrlFile"}}},"required":["files"]},"OpenAPIAiConversationUploadUrlFile":{"type":"object","properties":{"file_key":{"type":"string"},"upload_url":{"type":"string"},"full_name":{"type":"string"},"file_name":{"type":"string"},"size":{"type":"number"},"extension":{"type":"string"},"mime_type":{"type":"string"}},"required":["file_key","upload_url","full_name","file_name","size","extension","mime_type"]},"OpenAPIAiConversationUploadUrlsRequest":{"type":"object","properties":{"conversation_id":{"type":"string","format":"uuid"},"files":{"type":"array","items":{"$ref":"#/components/schemas/OpenAPIAiConversationUploadUrlFileInput"},"minItems":1}},"required":["files"],"additionalProperties":false},"OpenAPIAiConversationUploadUrlFileInput":{"type":"object","properties":{"full_name":{"type":"string","minLength":1},"file_name":{"type":"string","minLength":1},"size":{"type":"number","exclusiveMinimum":0},"extension":{"type":"string"},"mime_type":{"type":"string","minLength":1}},"required":["full_name","file_name","size","extension","mime_type"]},"OpenAPIAiConversationCreateFilesResponse":{"type":"object","properties":{"files":{"type":"array","items":{"$ref":"#/components/schemas/OpenAPIAiConversationCreatedFile"}}},"required":["files"]},"OpenAPIAiConversationCreatedFile":{"type":"object","properties":{"id":{"type":"string"},"file_key":{"type":"string"},"file_name":{"type":"string"},"file_size":{"type":"number"},"mime_type":{"type":"string"},"file_extension":{"type":"string"},"parsed_file_key":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","file_key","file_name","file_size","mime_type","file_extension","created_at","updated_at"]},"OpenAPIAiConversationCreateFilesRequest":{"type":"object","properties":{"files":{"type":"array","items":{"$ref":"#/components/schemas/OpenAPIAiConversationCreateFileInput"},"minItems":1}},"required":["files"],"additionalProperties":false},"OpenAPIAiConversationCreateFileInput":{"type":"object","properties":{"file_key":{"type":"string","minLength":1},"file_name":{"type":"string","minLength":1},"file_size":{"type":"number","exclusiveMinimum":0},"mime_type":{"type":"string","minLength":1},"file_extension":{"type":"string"},"require_parse":{"type":"boolean"}},"required":["file_key","file_name","file_size","mime_type","file_extension"]},"AllowedLlmModel":{"type":"object","properties":{"name":{"type":"string"},"displayName":{"type":"string"},"description":{"type":"string"},"provider":{"type":"string"}},"required":["name","displayName","description","provider"]},"InstalledAppsListResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/InstalledApp"}},"offset":{"type":"number"},"count":{"type":"number"},"total":{"type":"number"}},"required":["data","offset","count","total"]},"InstalledApp":{"type":"object","properties":{"id":{"type":"string"},"origin_id":{"type":"string"},"installed_id":{"type":"string"},"name":{"type":"string"},"logo_url":{"type":["string","null"]},"actions":{"type":"array","items":{"$ref":"#/components/schemas/InstalledAppActionSummary"}}},"required":["id","origin_id","installed_id","name","logo_url","actions"]},"InstalledAppActionSummary":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"}},"required":["id","name","description"]},"InstalledAppAction":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"input_schema":{"type":["array","null"],"items":{"$ref":"#/components/schemas/InstalledAppActionInputSchemaItem"}},"output_schema":{"allOf":[{"$ref":"#/components/schemas/InstalledAppJsonSchemaDefinition"},{"type":["object","null"]}]}},"required":["id","name","description","input_schema","output_schema"]},"InstalledAppActionInputSchemaItem":{"type":"object","properties":{"schema":{"$ref":"#/components/schemas/InstalledAppJsonSchemaDefinition"},"location":{"type":"string"},"arrayFormat":{"type":"string","enum":["comma","repeat","indices","brackets"]}},"required":["schema","location"]},"InstalledAppJsonSchemaDefinition":{"type":"object","properties":{},"additionalProperties":{}},"ExecuteInstalledAppActionResponse":{"type":"object","properties":{"is_native":{"type":"boolean"},"request":{},"response":{}},"required":["is_native"]},"ExecuteInstalledAppActionAcceptedResponse":{"type":"object","properties":{"run_id":{"type":"string"},"status":{"type":"string","enum":["queued","running"]},"status_url":{"type":"string"},"callback_url":{"type":["string","null"]},"created_at":{"type":"string"}},"required":["run_id","status","status_url","callback_url","created_at"]},"ExecuteInstalledAppActionBody":{"type":"object","properties":{"parameters":{"type":"array","items":{"type":"object","properties":{"location":{"type":"string","enum":["arguments","body","query","path","header"]},"input":{}},"required":["location"]}},"execution_mode":{"type":"string","enum":["sync","async"]},"callback_url":{"type":"string"}},"additionalProperties":false},"InstalledAppActionRunResponse":{"type":"object","properties":{"run_id":{"type":"string"},"status":{"type":"string","enum":["queued","running","completed","failed","canceled"]},"created_at":{"type":"string"},"updated_at":{"type":"string"},"started_at":{"type":["string","null"]},"finished_at":{"type":["string","null"]},"callback":{"type":"object","properties":{"url":{"type":["string","null"]},"status":{"type":"string","enum":["not_requested","pending","delivered","failed"]},"attempt_count":{"type":"integer"},"max_attempts":{"type":"integer"},"next_attempt_at":{"type":["string","null"]},"last_attempt_at":{"type":["string","null"]},"delivered_at":{"type":["string","null"]},"last_error":{"type":["string","null"]},"last_http_status":{"type":["integer","null"]}},"required":["url","status","attempt_count","max_attempts","next_attempt_at","last_attempt_at","delivered_at","last_error","last_http_status"]},"result":{},"error":{"type":["object","null"],"properties":{"message":{"type":"string"},"statusCode":{"type":"integer"},"code":{"type":["string","null"]},"name":{"type":["string","null"]}},"required":["message","statusCode","code","name"]}},"required":["run_id","status","created_at","updated_at","started_at","finished_at","callback","error"]},"PlacementList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Placement"}},"total":{"type":"number"},"limit":{"type":"number"},"offset":{"type":"number"},"page":{"type":"number","deprecated":true,"description":"Deprecated compatibility field derived from `limit` and `offset`."},"page_size":{"type":"number","deprecated":true,"description":"Deprecated compatibility field derived from `limit`."}},"required":["data","total","limit","offset","page","page_size"]},"Placement":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":"string"},"remote_id":{"type":["string","null"]},"candidate_id":{"type":"string"},"candidate_name":{"type":["string","null"]},"job_id":{"type":["string","null"]},"job_title":{"type":["string","null"]},"client_id":{"type":["string","null"]},"client_name":{"type":["string","null"]},"owner":{"type":["object","null"],"additionalProperties":{}},"status":{"type":["string","null"]},"placement_type":{"type":["string","null"]},"fee_type":{"type":["string","null"]},"start_date":{"type":["string","null"]},"end_date":{"type":["string","null"]},"salary_or_bill_rate":{"type":["number","null"]},"pay_rate":{"type":["number","null"]},"fee_value":{"type":["number","null"]},"currency":{"type":["string","null"]},"guarantee_end_date":{"type":["string","null"]},"source":{"type":["string","null"]},"note":{"type":["string","null"]},"meta":{"type":"object","additionalProperties":{}},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","dataset_id","candidate_id"]},"PlacementCreate":{"type":"object","properties":{"remote_id":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"candidate_id":{"type":"string","minLength":1},"candidate":{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["candidate"]},"is_remote":{"type":"boolean"}},"required":["id","type"]},"job_id":{"type":"string","minLength":1},"job":{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["job"]},"is_remote":{"type":"boolean"}},"required":["id","type"]},"status":{"type":"string","minLength":1},"placement_type":{"type":"string"},"fee_type":{"type":"string"},"start_date":{"type":["string","null"],"format":"date-time"},"end_date":{"type":["string","null"],"format":"date-time"},"salary_or_bill_rate":{"type":"number"},"pay_rate":{"type":"number"},"fee_value":{"type":"number"},"currency":{"type":"string"},"guarantee_end_date":{"type":["string","null"],"format":"date-time"},"source":{"type":"string"},"note":{"type":"string"},"attributes":{"type":"object","additionalProperties":{}},"owner":{"anyOf":[{"type":"string","minLength":1},{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string"}},"required":["id"]}]}},"required":["status"]},"PlacementUpsert":{"type":"object","properties":{"remote_id":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"candidate_id":{"type":"string","minLength":1},"candidate":{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["candidate"]},"is_remote":{"type":"boolean"}},"required":["id","type"]},"job_id":{"type":"string","minLength":1},"job":{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["job"]},"is_remote":{"type":"boolean"}},"required":["id","type"]},"status":{"type":"string","minLength":1},"placement_type":{"type":"string"},"fee_type":{"type":"string"},"start_date":{"type":["string","null"],"format":"date-time"},"end_date":{"type":["string","null"],"format":"date-time"},"salary_or_bill_rate":{"type":"number"},"pay_rate":{"type":"number"},"fee_value":{"type":"number"},"currency":{"type":"string"},"guarantee_end_date":{"type":["string","null"],"format":"date-time"},"source":{"type":"string"},"note":{"type":"string"},"attributes":{"type":"object","additionalProperties":{}},"owner":{"anyOf":[{"type":"string","minLength":1},{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string"}},"required":["id"]}]},"id":{"type":"string"},"idempotency_key":{"type":"string","description":"When provided, deduplicates on attributes[idempotency_key]. The value must be present in attributes."}}},"PlacementUpdate":{"type":"object","properties":{"remote_id":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"candidate_id":{"type":"string","minLength":1},"candidate":{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["candidate"]},"is_remote":{"type":"boolean"}},"required":["id","type"]},"job_id":{"type":"string","minLength":1},"job":{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","enum":["job"]},"is_remote":{"type":"boolean"}},"required":["id","type"]},"status":{"type":"string","minLength":1},"placement_type":{"type":"string"},"fee_type":{"type":"string"},"start_date":{"type":["string","null"],"format":"date-time"},"end_date":{"type":["string","null"],"format":"date-time"},"salary_or_bill_rate":{"type":"number"},"pay_rate":{"type":"number"},"fee_value":{"type":"number"},"currency":{"type":"string"},"guarantee_end_date":{"type":["string","null"],"format":"date-time"},"source":{"type":"string"},"note":{"type":"string"},"attributes":{"type":"object","additionalProperties":{}},"owner":{"anyOf":[{"type":"string","minLength":1},{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string"}},"required":["id"]}]}}},"JobLead":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":"string"},"client_id":{"type":["string","null"]},"source":{"type":"string"},"remote_id":{"type":["string","null"]},"source_type":{"type":["string","null"]},"source_url":{"type":["string","null"]},"apply_url":{"type":["string","null"]},"source_domain":{"type":["string","null"]},"title":{"type":["string","null"]},"description_text":{"type":["string","null"]},"description_html":{"type":["string","null"]},"employer_name":{"type":["string","null"]},"employer_domain":{"type":["string","null"]},"employer_website_url":{"type":["string","null"]},"employer_logo_url":{"type":["string","null"]},"employer_linkedin_slug":{"type":["string","null"]},"employer_industry":{"type":["string","null"]},"employer_is_recruitment_agency":{"type":["boolean","null"]},"status":{"type":"string"},"availability_status":{"type":"string","enum":["active","expired","duplicate","unknown"]},"posted_at":{"type":["string","null"]},"expires_at":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"},"sys_created_at":{"type":"string"},"sys_updated_at":{"type":"string"},"display_location":{"type":["string","null"]},"locations":{"type":"array","items":{"type":"object","additionalProperties":{}}},"work_arrangement":{"type":["string","null"]},"working_hours":{"type":["string","null"]},"has_visa_sponsorship":{"type":["boolean","null"]},"language":{"type":["string","null"]},"location_type":{"type":["string","null"]},"is_remote":{"type":["boolean","null"]},"remote_location":{"type":["string","null"]},"timezones":{"type":"array","items":{"type":"string"}},"work_arrangement_office_days":{"type":"array","items":{"type":"string"}},"key_skills":{"type":"array","items":{"type":"string"}},"keywords":{"type":"array","items":{"type":"string"}},"taxonomies":{"type":"array","items":{"type":"string"}},"benefits":{"type":"array","items":{"type":"string"}},"responsibilities_summary":{"type":["string","null"]},"requirements_summary":{"type":["string","null"]},"education_requirements":{"type":["string","null"]},"employment_type":{"type":["string","null"]},"experience_level":{"type":["string","null"]},"salary_text":{"type":["string","null"]},"salary_min_value":{"type":["number","null"]},"salary_max_value":{"type":["number","null"]},"salary_currency":{"type":["string","null"]},"salary_unit":{"type":["string","null"]},"contact_hints":{"type":"array","items":{"type":"object","additionalProperties":{}}},"provider_payload":{"type":"object","additionalProperties":{}},"meta":{"type":"object","additionalProperties":{}},"owner":{"type":["object","null"],"properties":{"id":{"type":"string"},"type":{"type":"string"}},"required":["id","type"]},"created_by":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"}},"required":["id","type"]},"archived_at":{"type":["string","null"]},"dashboard_url":{"type":"string"}},"required":["id","dataset_id","source","status","availability_status","created_at","updated_at","sys_created_at","sys_updated_at","locations","timezones","work_arrangement_office_days","key_skills","keywords","taxonomies","benefits","contact_hints","provider_payload","meta","created_by","dashboard_url"]},"JobLeadCreate":{"type":"object","properties":{"client_id":{"type":"string","format":"uuid","description":"Quake client UUID to link to this Job Lead"},"client_remote_id":{"type":"string","description":"Client remote_id. Resolved to a Quake client ID. Takes precedence over client_id"},"source":{"type":"string","minLength":1,"description":"Origin of the Job Lead, such as fantastic_jobs or manual"},"remote_id":{"type":["string","null"],"description":"Source-specific identifier for this Job Lead"},"source_type":{"type":["string","null"]},"source_url":{"type":["string","null"]},"apply_url":{"type":["string","null"]},"source_domain":{"type":["string","null"]},"title":{"type":["string","null"]},"description_text":{"type":["string","null"]},"description_html":{"type":["string","null"]},"employer_name":{"type":["string","null"]},"employer_domain":{"type":["string","null"]},"employer_website_url":{"type":["string","null"]},"employer_logo_url":{"type":["string","null"]},"employer_linkedin_slug":{"type":["string","null"]},"employer_industry":{"type":["string","null"]},"employer_is_recruitment_agency":{"type":["boolean","null"]},"status":{"type":"string"},"availability_status":{"type":"string","enum":["active","expired","duplicate","unknown"]},"posted_at":{"type":["string","null"],"format":"date-time"},"expires_at":{"type":["string","null"],"format":"date-time"},"created_at":{"type":"string","format":"date-time","description":"Source-created timestamp, if supplied"},"updated_at":{"type":"string","format":"date-time","description":"Source-updated timestamp, if supplied"},"display_location":{"type":["string","null"]},"locations":{"type":"array","items":{"type":"object","additionalProperties":{}}},"work_arrangement":{"type":["string","null"]},"working_hours":{"type":["string","null"]},"has_visa_sponsorship":{"type":["boolean","null"]},"language":{"type":["string","null"]},"location_type":{"type":["string","null"]},"is_remote":{"type":["boolean","null"]},"remote_location":{"type":["string","null"]},"timezones":{"type":"array","items":{"type":"string"}},"work_arrangement_office_days":{"type":"array","items":{"type":"string"}},"key_skills":{"type":"array","items":{"type":"string"}},"keywords":{"type":"array","items":{"type":"string"}},"taxonomies":{"type":"array","items":{"type":"string"}},"benefits":{"type":"array","items":{"type":"string"}},"responsibilities_summary":{"type":["string","null"]},"requirements_summary":{"type":["string","null"]},"education_requirements":{"type":["string","null"]},"employment_type":{"type":["string","null"]},"experience_level":{"type":["string","null"]},"salary_text":{"type":["string","null"]},"salary_min_value":{"type":["number","null"]},"salary_max_value":{"type":["number","null"]},"salary_currency":{"type":["string","null"]},"salary_unit":{"type":["string","null"]},"contact_hints":{"type":"array","items":{"type":"object","additionalProperties":{}}},"provider_payload":{"type":"object","additionalProperties":{}},"meta":{"type":"object","additionalProperties":{}},"owner":{"type":["object","null"],"properties":{"id":{"type":"string","description":"Dataset user ID or email address of the owner"},"type":{"type":"string"}},"required":["id","type"]}},"required":["source"],"additionalProperties":false},"JobLeadUpsertResponse":{"type":"object","properties":{"operation":{"type":"string","enum":["created","updated"]},"record":{"$ref":"#/components/schemas/JobLead"}},"required":["operation","record"]},"JobLeadUpsert":{"type":"object","properties":{"client_id":{"type":"string","format":"uuid","description":"Quake client UUID to link to this Job Lead"},"client_remote_id":{"type":"string","description":"Client remote_id. Resolved to a Quake client ID. Takes precedence over client_id"},"source":{"type":"string","minLength":1,"description":"Origin of the Job Lead, such as fantastic_jobs or manual"},"remote_id":{"type":["string","null"],"description":"Source-specific identifier for this Job Lead"},"source_type":{"type":["string","null"]},"source_url":{"type":["string","null"]},"apply_url":{"type":["string","null"]},"source_domain":{"type":["string","null"]},"title":{"type":["string","null"]},"description_text":{"type":["string","null"]},"description_html":{"type":["string","null"]},"employer_name":{"type":["string","null"]},"employer_domain":{"type":["string","null"]},"employer_website_url":{"type":["string","null"]},"employer_logo_url":{"type":["string","null"]},"employer_linkedin_slug":{"type":["string","null"]},"employer_industry":{"type":["string","null"]},"employer_is_recruitment_agency":{"type":["boolean","null"]},"status":{"type":"string"},"availability_status":{"type":"string","enum":["active","expired","duplicate","unknown"]},"posted_at":{"type":["string","null"],"format":"date-time"},"expires_at":{"type":["string","null"],"format":"date-time"},"created_at":{"type":"string","format":"date-time","description":"Source-created timestamp, if supplied"},"updated_at":{"type":"string","format":"date-time","description":"Source-updated timestamp, if supplied"},"display_location":{"type":["string","null"]},"locations":{"type":"array","items":{"type":"object","additionalProperties":{}}},"work_arrangement":{"type":["string","null"]},"working_hours":{"type":["string","null"]},"has_visa_sponsorship":{"type":["boolean","null"]},"language":{"type":["string","null"]},"location_type":{"type":["string","null"]},"is_remote":{"type":["boolean","null"]},"remote_location":{"type":["string","null"]},"timezones":{"type":"array","items":{"type":"string"}},"work_arrangement_office_days":{"type":"array","items":{"type":"string"}},"key_skills":{"type":"array","items":{"type":"string"}},"keywords":{"type":"array","items":{"type":"string"}},"taxonomies":{"type":"array","items":{"type":"string"}},"benefits":{"type":"array","items":{"type":"string"}},"responsibilities_summary":{"type":["string","null"]},"requirements_summary":{"type":["string","null"]},"education_requirements":{"type":["string","null"]},"employment_type":{"type":["string","null"]},"experience_level":{"type":["string","null"]},"salary_text":{"type":["string","null"]},"salary_min_value":{"type":["number","null"]},"salary_max_value":{"type":["number","null"]},"salary_currency":{"type":["string","null"]},"salary_unit":{"type":["string","null"]},"contact_hints":{"type":"array","items":{"type":"object","additionalProperties":{}}},"provider_payload":{"type":"object","additionalProperties":{}},"meta":{"type":"object","additionalProperties":{}},"owner":{"type":["object","null"],"properties":{"id":{"type":"string","description":"Dataset user ID or email address of the owner"},"type":{"type":"string"}},"required":["id","type"]}},"required":["source"],"additionalProperties":false},"JobLeadUpdate":{"type":"object","properties":{"client_id":{"type":"string","format":"uuid","description":"Quake client UUID to link to this Job Lead"},"client_remote_id":{"type":"string","description":"Client remote_id. Resolved to a Quake client ID. Takes precedence over client_id"},"source":{"type":"string","minLength":1,"description":"Origin of the Job Lead, such as fantastic_jobs or manual"},"remote_id":{"type":["string","null"],"description":"Source-specific identifier for this Job Lead"},"source_type":{"type":["string","null"]},"source_url":{"type":["string","null"]},"apply_url":{"type":["string","null"]},"source_domain":{"type":["string","null"]},"title":{"type":["string","null"]},"description_text":{"type":["string","null"]},"description_html":{"type":["string","null"]},"employer_name":{"type":["string","null"]},"employer_domain":{"type":["string","null"]},"employer_website_url":{"type":["string","null"]},"employer_logo_url":{"type":["string","null"]},"employer_linkedin_slug":{"type":["string","null"]},"employer_industry":{"type":["string","null"]},"employer_is_recruitment_agency":{"type":["boolean","null"]},"status":{"type":"string"},"availability_status":{"type":"string","enum":["active","expired","duplicate","unknown"]},"posted_at":{"type":["string","null"],"format":"date-time"},"expires_at":{"type":["string","null"],"format":"date-time"},"created_at":{"type":"string","format":"date-time","description":"Source-created timestamp, if supplied"},"updated_at":{"type":"string","format":"date-time","description":"Source-updated timestamp, if supplied"},"display_location":{"type":["string","null"]},"locations":{"type":"array","items":{"type":"object","additionalProperties":{}}},"work_arrangement":{"type":["string","null"]},"working_hours":{"type":["string","null"]},"has_visa_sponsorship":{"type":["boolean","null"]},"language":{"type":["string","null"]},"location_type":{"type":["string","null"]},"is_remote":{"type":["boolean","null"]},"remote_location":{"type":["string","null"]},"timezones":{"type":"array","items":{"type":"string"}},"work_arrangement_office_days":{"type":"array","items":{"type":"string"}},"key_skills":{"type":"array","items":{"type":"string"}},"keywords":{"type":"array","items":{"type":"string"}},"taxonomies":{"type":"array","items":{"type":"string"}},"benefits":{"type":"array","items":{"type":"string"}},"responsibilities_summary":{"type":["string","null"]},"requirements_summary":{"type":["string","null"]},"education_requirements":{"type":["string","null"]},"employment_type":{"type":["string","null"]},"experience_level":{"type":["string","null"]},"salary_text":{"type":["string","null"]},"salary_min_value":{"type":["number","null"]},"salary_max_value":{"type":["number","null"]},"salary_currency":{"type":["string","null"]},"salary_unit":{"type":["string","null"]},"contact_hints":{"type":"array","items":{"type":"object","additionalProperties":{}}},"provider_payload":{"type":"object","additionalProperties":{}},"meta":{"type":"object","additionalProperties":{}},"owner":{"type":["object","null"],"properties":{"id":{"type":"string","description":"Dataset user ID or email address of the owner"},"type":{"type":"string"}},"required":["id","type"]}},"additionalProperties":false},"JobLeadJobLink":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":"string"},"job_lead_id":{"type":"string"},"job_id":{"type":"string"},"created_by":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"}},"required":["id","type"]},"sys_created_at":{"type":"string"}},"required":["id","dataset_id","job_lead_id","job_id","created_by","sys_created_at"]},"JobLeadLinkedJob":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":["string","null"]},"client_id":{"type":["string","null"]},"code":{"type":"string"},"title":{"type":"string"},"status":{"type":["string","null"]},"remote_id":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"},"dashboard_url":{"type":"string"}},"required":["id","code","title","created_at","updated_at","dashboard_url"]},"JobSubmission":{"type":"object","properties":{"id":{"type":"string"},"job_id":{"type":"string"},"candidate_id":{"type":"string"},"remote_id":{"type":["string","null"]},"stage":{"type":"string"},"metadata":{"type":["object","null"],"additionalProperties":{}},"created_by":{"type":["object","null"],"additionalProperties":{}},"created_at":{"type":"string"},"updated_at":{"type":"string"},"sys_created_at":{"type":"string"},"sys_updated_at":{"type":"string"}},"required":["id","job_id","candidate_id","stage"]},"JobSubmissionCreate":{"type":"object","properties":{"job_id":{"type":"string","format":"uuid","description":"UUID of the job to link this submission to"},"candidate_id":{"type":"string","format":"uuid","description":"UUID of the candidate being submitted"},"remote_id":{"type":"string","description":"External system identifier for this submission"},"stage":{"type":"string","description":"Initial pipeline stage for the submission"},"metadata":{"type":["object","null"],"additionalProperties":{},"description":"Arbitrary metadata"},"created_at":{"type":"string","format":"date-time","description":"Override created_at timestamp. Useful for data imports."},"updated_at":{"type":"string","format":"date-time","description":"Override updated_at timestamp. Useful for data imports."}},"required":["job_id","candidate_id"],"additionalProperties":false},"JobSubmissionUpsertResponse":{"type":"object","properties":{"operation":{"type":"string","enum":["created","updated"]},"record":{"$ref":"#/components/schemas/JobSubmission"}},"required":["operation","record"]},"JobSubmissionUpsert":{"type":"object","properties":{"job_id":{"type":"string","format":"uuid","description":"UUID of the job to link this submission to"},"candidate_id":{"type":"string","format":"uuid","description":"UUID of the candidate being submitted"},"remote_id":{"type":"string","description":"External system identifier for this submission"},"stage":{"type":"string","description":"Pipeline stage for the submission"},"metadata":{"type":["object","null"],"additionalProperties":{},"description":"Arbitrary metadata"},"created_at":{"type":"string","format":"date-time","description":"Override created_at timestamp. Useful for data imports."},"updated_at":{"type":"string","format":"date-time","description":"Override updated_at timestamp. Useful for data imports."}},"required":["job_id","candidate_id"],"additionalProperties":false},"JobSubmissionUpdate":{"type":"object","properties":{"stage":{"type":"string","description":"New pipeline stage for the submission"},"remote_id":{"type":"string","description":"External system identifier for this submission"},"metadata":{"type":["object","null"],"additionalProperties":{},"description":"Arbitrary metadata"},"created_at":{"type":"string","format":"date-time","description":"Override created_at timestamp. Useful for data imports."},"updated_at":{"type":"string","format":"date-time","description":"Override updated_at timestamp. Useful for data imports."}},"additionalProperties":false},"Application":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":["string","null"]},"candidate_id":{"type":"string"},"job_id":{"type":"string"},"remote_id":{"type":["string","null"]},"first_name":{"type":["string","null"]},"last_name":{"type":["string","null"]},"email":{"type":["string","null"]},"phone_number":{"type":["string","null"]},"stage":{"type":["string","null"]},"notes":{"type":["array","null"],"items":{"type":"string"}},"meta":{"type":"object","additionalProperties":{}},"screening_questions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"question":{"type":"string"},"answer":{"type":"array","items":{"type":"string"}}},"required":["question","answer"]}},"created_at":{"type":"string"},"updated_at":{"type":"string"},"sys_created_at":{"type":["string","null"]},"sys_updated_at":{"type":["string","null"]}},"required":["id","candidate_id","job_id"]},"ApplicationCreate":{"type":"object","properties":{"candidate_id":{"type":"string","format":"uuid"},"job_id":{"type":"string","format":"uuid"},"remote_id":{"type":"string"},"first_name":{"type":"string"},"last_name":{"type":"string"},"email":{"type":"string","format":"email"},"phone_number":{"type":"string"},"stage":{"type":"string"},"notes":{"type":["array","null"],"items":{"type":"string"}},"meta":{"type":"object","additionalProperties":{}},"screening_questions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"question":{"type":"string"},"answer":{"type":"array","items":{"type":"string"}}},"required":["question","answer"]}},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"sys_created_at":{"type":["string","null"],"format":"date-time"},"sys_updated_at":{"type":["string","null"],"format":"date-time"}},"required":["candidate_id","job_id"]},"ApplicationUpdate":{"type":"object","properties":{"candidate_id":{"type":"string","format":"uuid"},"job_id":{"type":"string","format":"uuid"},"remote_id":{"type":"string"},"first_name":{"type":"string"},"last_name":{"type":"string"},"email":{"type":"string","format":"email"},"phone_number":{"type":"string"},"stage":{"type":"string"},"notes":{"type":["array","null"],"items":{"type":"string"}},"meta":{"type":"object","additionalProperties":{}},"screening_questions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"question":{"type":"string"},"answer":{"type":"array","items":{"type":"string"}}},"required":["question","answer"]}},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"sys_created_at":{"type":["string","null"],"format":"date-time"},"sys_updated_at":{"type":["string","null"],"format":"date-time"}}},"ApplicationUpsert":{"type":"object","properties":{"candidate_id":{"type":"string","format":"uuid"},"job_id":{"type":"string","format":"uuid"},"remote_id":{"type":"string"},"first_name":{"type":"string"},"last_name":{"type":"string"},"email":{"type":"string","format":"email"},"phone_number":{"type":"string"},"stage":{"type":"string"},"notes":{"type":["array","null"],"items":{"type":"string"}},"meta":{"type":"object","additionalProperties":{}},"screening_questions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"question":{"type":"string"},"answer":{"type":"array","items":{"type":"string"}}},"required":["question","answer"]}},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"sys_created_at":{"type":["string","null"],"format":"date-time"},"sys_updated_at":{"type":["string","null"],"format":"date-time"}},"required":["remote_id"],"additionalProperties":false},"TagDefinition":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":"string"},"remote_id":{"type":["string","null"]},"key":{"type":"string"},"name":{"type":"string"},"description":{"type":["string","null"]},"status":{"type":"string"},"allowed_model_refs":{"type":"array","items":{"type":"string","minLength":1},"description":"Model refs this tag definition can be assigned to, such as candidate, job, or ce:{custom_model_id}."},"created_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]},"updated_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]}},"required":["id","dataset_id","remote_id","key","name","description","status","allowed_model_refs"]},"TagDefinitionCreate":{"type":"object","properties":{"remote_id":{"type":["string","null"]},"key":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"description":{"type":["string","null"]},"status":{"type":"string"},"allowed_model_refs":{"type":"array","items":{"type":"string","minLength":1},"description":"Model refs this tag definition can be assigned to, such as candidate, job, or ce:{custom_model_id}."}},"required":["key","name"],"additionalProperties":false},"TagDefinitionUpsertResponse":{"type":"object","properties":{"operation":{"type":"string","enum":["created","updated"]},"record":{"$ref":"#/components/schemas/TagDefinition"}},"required":["operation","record"]},"TagDefinitionUpsert":{"type":"object","properties":{"remote_id":{"type":"string","minLength":1},"key":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"description":{"type":["string","null"]},"status":{"type":"string"},"allowed_model_refs":{"type":"array","items":{"type":"string","minLength":1},"description":"Model refs this tag definition can be assigned to, such as candidate, job, or ce:{custom_model_id}."}},"required":["remote_id"],"additionalProperties":false},"TagDefinitionUpdate":{"type":"object","properties":{"remote_id":{"type":["string","null"]},"name":{"type":"string","minLength":1},"description":{"type":["string","null"]},"status":{"type":"string"},"allowed_model_refs":{"type":"array","items":{"type":"string","minLength":1},"description":"Model refs this tag definition can be assigned to, such as candidate, job, or ce:{custom_model_id}."}},"additionalProperties":false},"TagValue":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":"string"},"tag_definition_id":{"type":"string"},"remote_id":{"type":["string","null"]},"value":{"type":"string"},"normalized_value":{"type":"string"},"status":{"type":"string"},"sort_order":{"type":"number"},"created_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]},"updated_at":{"anyOf":[{"type":"string"},{"type":"string","format":"date-time"}]}},"required":["id","dataset_id","tag_definition_id","remote_id","value","normalized_value","status","sort_order"]},"TagValueCreate":{"type":"object","properties":{"tag_definition_id":{"type":"string","minLength":1},"remote_id":{"type":["string","null"]},"value":{"type":"string","minLength":1},"normalized_value":{"type":"string","minLength":1},"status":{"type":"string"},"sort_order":{"type":"integer"}},"required":["tag_definition_id","value"],"additionalProperties":false},"TagValueUpsertResponse":{"type":"object","properties":{"operation":{"type":"string","enum":["created","updated"]},"record":{"$ref":"#/components/schemas/TagValue"}},"required":["operation","record"]},"TagValueUpsert":{"type":"object","properties":{"tag_definition_id":{"type":"string","minLength":1},"remote_id":{"type":"string","minLength":1},"value":{"type":"string","minLength":1},"normalized_value":{"type":"string","minLength":1},"status":{"type":"string"},"sort_order":{"type":"integer"}},"required":["tag_definition_id","remote_id"],"additionalProperties":false},"TagValueUpdate":{"type":"object","properties":{"remote_id":{"type":["string","null"]},"value":{"type":"string","minLength":1},"normalized_value":{"type":"string","minLength":1},"status":{"type":"string"},"sort_order":{"type":"integer"}},"additionalProperties":false},"Note":{"type":"object","properties":{"id":{"type":"string","example":"8c9dcf1f-4b8c-4cab-9fd4-f6a0d917d5a5"},"dataset_id":{"type":["string","null"],"example":"4fd9c3f4-e0fe-46f4-a4f2-6eddb7d7f405"},"title":{"type":"string","example":"Candidate debrief after intake"},"content":{"type":"string","example":"Candidate is open to hybrid roles, prefers React teams, and can interview next Tuesday."},"external_id":{"type":["string","null"],"example":"bullhorn-note-1024"},"records":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"3f5a4d90-0c5e-4e6d-9cd0-7d9f76e2b7f3"},"type":{"type":"string","example":"candidate"}},"required":["id","type"]}},"created_by":{"type":["object","null"],"properties":{"id":{"type":"string","example":"oauth-client-123"},"type":{"type":"string","example":"oauth_client"}},"required":["id","type"]},"created_at":{"type":"string","example":"2026-05-21T10:00:00.000Z"},"updated_at":{"type":"string","example":"2026-05-21T10:05:00.000Z"},"sys_created_at":{"type":"string","example":"2026-05-21T10:15:00.000Z"},"sys_updated_at":{"type":"string","example":"2026-05-21T10:15:00.000Z"}},"required":["id","title","content","records"],"example":{"id":"8c9dcf1f-4b8c-4cab-9fd4-f6a0d917d5a5","dataset_id":"4fd9c3f4-e0fe-46f4-a4f2-6eddb7d7f405","title":"Candidate debrief after intake","content":"Candidate is open to hybrid roles, prefers React teams, and can interview next Tuesday.","external_id":"bullhorn-note-1024","records":[{"id":"3f5a4d90-0c5e-4e6d-9cd0-7d9f76e2b7f3","type":"candidate"},{"id":"7f7851db-2c55-4830-8d4f-7c94a78680a8","type":"job"},{"id":"5ce7f6f2-b484-4c44-85cc-6e6768948ff1","type":"client"}],"created_by":{"id":"oauth-client-123","type":"oauth_client"},"created_at":"2026-05-21T10:00:00.000Z","updated_at":"2026-05-21T10:05:00.000Z","sys_created_at":"2026-05-21T10:15:00.000Z","sys_updated_at":"2026-05-21T10:15:00.000Z"}},"NoteCreate":{"type":"object","properties":{"content":{"type":"string","example":"Candidate is open to hybrid roles, prefers React teams, and can interview next Tuesday."},"title":{"type":"string","description":"Optional title; auto-generated via AI if omitted","example":"Candidate debrief after intake"},"external_id":{"type":"string","description":"External system identifier used for deduplication via upsert","example":"bullhorn-note-1024"},"created_at":{"type":"string","format":"date-time","description":"Override created_at timestamp. Useful for data imports.","example":"2024-01-01T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","description":"Override updated_at timestamp. Useful for data imports.","example":"2024-01-02T00:00:00.000Z"},"records":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Quake record ID, or remote_id when is_remote is true","example":"3f5a4d90-0c5e-4e6d-9cd0-7d9f76e2b7f3"},"type":{"type":"string","description":"Record type. Common values: `candidate`, `job`, `client`, or `contact`.","example":"candidate"},"is_remote":{"type":"boolean","description":"When true, id is resolved as the remote_id of the linked record before storing the link","example":true}},"required":["id","type"]},"default":[],"description":"Records linked to this note. Pass multiple entries to attach one note to multiple records."}},"required":["content"],"additionalProperties":false,"example":{"title":"Candidate debrief after intake","content":"Candidate is open to hybrid roles, prefers React teams, and can interview next Tuesday.","external_id":"bullhorn-note-1024","records":[{"id":"3f5a4d90-0c5e-4e6d-9cd0-7d9f76e2b7f3","type":"candidate"},{"id":"7f7851db-2c55-4830-8d4f-7c94a78680a8","type":"job"},{"id":"5ce7f6f2-b484-4c44-85cc-6e6768948ff1","type":"client"}]}},"NoteUpsertResponse":{"type":"object","properties":{"operation":{"type":"string","enum":["created","updated"]},"record":{"$ref":"#/components/schemas/Note"}},"required":["operation","record"]},"NoteUpsert":{"type":"object","properties":{"content":{"type":"string","example":"Candidate is open to hybrid roles, prefers React teams, and can interview next Tuesday."},"title":{"type":"string","description":"Optional title; auto-generated via AI if omitted","example":"Candidate debrief after intake"},"external_id":{"type":"string","description":"External identifier used to match and update an existing note","example":"bullhorn-note-1024"},"created_at":{"type":"string","format":"date-time","description":"Override created_at timestamp. Useful for data imports.","example":"2024-01-01T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","description":"Override updated_at timestamp. Useful for data imports.","example":"2024-01-02T00:00:00.000Z"},"records":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Quake record ID, or remote_id when is_remote is true","example":"3f5a4d90-0c5e-4e6d-9cd0-7d9f76e2b7f3"},"type":{"type":"string","description":"Record type. Common values: `candidate`, `job`, `client`, or `contact`.","example":"candidate"},"is_remote":{"type":"boolean","description":"When true, id is resolved as the remote_id of the linked record before storing the link","example":true}},"required":["id","type"]},"description":"Records linked to this note. Pass multiple entries to attach the same note to many records."},"update_created_by":{"type":"boolean","description":"When true, updates created_by to the current caller even when updating","example":false}},"required":["content","external_id"],"additionalProperties":false,"example":{"title":"Imported from ATS","content":"Syncing an external note while linking by remote IDs.","external_id":"greenhouse-note-88","records":[{"id":"gh-candidate-901","type":"candidate","is_remote":true},{"id":"gh-job-440","type":"job","is_remote":true}]}},"NoteUpdate":{"type":"object","properties":{"content":{"type":"string","example":"Updated after follow-up call. Candidate can also do onsite."},"title":{"type":"string","example":"Candidate debrief after follow-up"},"external_id":{"type":"string","example":"bullhorn-note-1024"},"created_at":{"type":"string","format":"date-time","description":"Override created_at timestamp. Useful for data imports.","example":"2024-02-01T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","description":"Override updated_at timestamp. Useful for data imports.","example":"2024-02-02T00:00:00.000Z"},"records":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Quake record ID, or remote_id when is_remote is true","example":"3f5a4d90-0c5e-4e6d-9cd0-7d9f76e2b7f3"},"type":{"type":"string","description":"Record type. Common values: `candidate`, `job`, `client`, or `contact`.","example":"candidate"},"is_remote":{"type":"boolean","description":"When true, id is resolved as the remote_id of the linked record before storing the link","example":true}},"required":["id","type"]},"description":"Replace the linked records on this note. Pass the full new set of record links for the note."}},"additionalProperties":false,"example":{"title":"Candidate debrief after follow-up","content":"Updated after follow-up call. Candidate can also do onsite.","created_at":"2024-02-01T00:00:00.000Z","updated_at":"2024-02-02T00:00:00.000Z","records":[{"id":"3f5a4d90-0c5e-4e6d-9cd0-7d9f76e2b7f3","type":"candidate"},{"id":"7f7851db-2c55-4830-8d4f-7c94a78680a8","type":"job"}]}},"CustomEntityDefinition":{"type":"object","properties":{"id":{"type":"string"},"dataset_id":{"type":"string"},"name":{"type":"string","example":"Deal"},"p_name":{"type":"string","description":"Plural display name for the entity, used in the dashboard UI (e.g. \"Deals\" for entity \"Deal\").","example":"Deals"},"icon":{"type":"string","description":"Display icon name shown in the dashboard UI. This is a visual hint only and has no effect on API behaviour. Defaults to \"Box\" if omitted.","example":"Box"},"table":{"type":["string","null"]},"title_attribute_ref":{"type":["string","null"],"description":"ID of the attribute used as the display label for records of this entity."},"attributes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Stable API field ID used as the key in custom entity record `data` payloads. Must start with a lowercase letter and then contain only lowercase letters, numbers, or underscores.","example":"account_manager"},"name":{"type":"string","minLength":1},"description":{"type":"string"},"searchable":{"type":"boolean","default":false,"description":"Whether this attribute should be marked as searchable for future search/index optimizations. Defaults to false.","example":false},"type":{"anyOf":[{"type":"string","enum":["Text"]},{"type":"string","enum":["Number"]},{"type":"string","enum":["Checkbox"]},{"type":"string","enum":["Date"]},{"type":"string","enum":["TimeStamp"]},{"type":"string","enum":["Select"]},{"type":"string","enum":["Multi Select"]},{"type":"string","enum":["Record"]},{"type":"string","enum":["Multi Record"]}]},"table_reference":{"type":"string","description":"For `Record` and `Multi Record` attributes, identifies the related source table or entity. Use a native table name such as `user_datasets`, `recruitment_candidates`, `recruitment_jobs`, or `recruitment_clients`, or use `custom_entity:{uuid}` to point at another custom entity in the same dataset. Example: if a `Record` attribute uses `table_reference: \"user_datasets\"`, record payloads should later store one `user_datasets.id` string for that field; `Multi Record` should store an array of `user_datasets.id` strings.","example":"user_datasets"},"optionsCreatable":{"type":"boolean"},"options":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"},"index":{"type":"number"}},"required":["label","value","index"]},"description":"Selectable options. Only present on Select and Multi Select attribute types."},"defaultValue":{"anyOf":[{"type":"string"},{"type":"boolean"},{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"}},"required":["label","value"]}}]},"boundaries":{"type":"object","properties":{"required":{"type":"boolean"},"unique":{"type":"boolean"}},"required":["required","unique"],"description":"Validation rules for this attribute. required: the field must have a value when creating records; unique: the value must be unique across all records of this entity.","example":{"required":false,"unique":false}},"richText":{"type":"boolean"},"dateTimeFormat":{"anyOf":[{"type":"string","enum":["default"]},{"type":"string","enum":["relative"]},{"type":"string","enum":["age_in_years"]}]}},"required":["id","name","type","boundaries"]}},"created_at":{"type":"string"},"updated_at":{"type":"string"},"dashboard_url":{"type":"string","description":"Direct link to this entity definition in the Quake dashboard."}},"required":["id","dataset_id","name","p_name","attributes","dashboard_url"]},"CustomEntityDefinitionCreate":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Singular display name for the entity.","example":"Deal"},"p_name":{"type":"string","minLength":1,"description":"Plural display name shown in the dashboard UI (e.g. \"Deals\" for entity \"Deal\").","example":"Deals"},"icon":{"type":"string","description":"Dashboard display icon. Defaults to \"Box\" if omitted.","example":"Box"},"table":{"type":"string","description":"Optional native table to associate with this entity."},"title_attribute_ref":{"type":"string","description":"Optional attribute ID to use as the record label/title. This must match one of the final attribute IDs from `attributes`.","example":"deal_name"},"attributes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Optional custom field ID. If omitted, Quake generates one from `name` using the same rules as the dashboard API. Final IDs must match `^[a-z]+[a-z0-9_]*$` and be unique within the entity.","example":"account_manager"},"name":{"type":"string","minLength":1},"description":{"type":"string"},"searchable":{"type":"boolean","default":false,"description":"Whether this attribute should be marked as searchable for future search/index optimizations. Defaults to false.","example":false},"type":{"anyOf":[{"type":"string","enum":["Text"]},{"type":"string","enum":["Number"]},{"type":"string","enum":["Checkbox"]},{"type":"string","enum":["Date"]},{"type":"string","enum":["TimeStamp"]},{"type":"string","enum":["Select"]},{"type":"string","enum":["Multi Select"]},{"type":"string","enum":["Record"]},{"type":"string","enum":["Multi Record"]}]},"table_reference":{"type":"string","description":"For `Record` and `Multi Record` attributes, identifies the related source table or entity. Use a native table name such as `user_datasets`, `recruitment_candidates`, `recruitment_jobs`, or `recruitment_clients`, or use `custom_entity:{uuid}` to point at another custom entity in the same dataset. Example: if a `Record` attribute uses `table_reference: \"user_datasets\"`, record payloads should later store one `user_datasets.id` string for that field; `Multi Record` should store an array of `user_datasets.id` strings.","example":"user_datasets"},"optionsCreatable":{"type":"boolean"},"options":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"},"index":{"type":"number"}},"required":["label","value","index"]},"description":"Selectable options. Only present on Select and Multi Select attribute types."},"defaultValue":{"anyOf":[{"type":"string"},{"type":"boolean"},{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"}},"required":["label","value"]}}]},"boundaries":{"type":"object","properties":{"required":{"type":"boolean"},"unique":{"type":"boolean"}},"required":["required","unique"],"description":"Validation rules for this attribute. required: the field must have a value when creating records; unique: the value must be unique across all records of this entity.","example":{"required":false,"unique":false}},"richText":{"type":"boolean"},"dateTimeFormat":{"anyOf":[{"type":"string","enum":["default"]},{"type":"string","enum":["relative"]},{"type":"string","enum":["age_in_years"]}]}},"required":["name","type","boundaries"],"additionalProperties":false},"default":[],"description":"Attribute definitions for this entity. Each attribute may include a custom `id`; if omitted, Quake generates one from `name` using the same rules as the dashboard API. Those final attribute IDs are later used as the keys in `/core/custom-entities/{customEntityId}/records` `data` payloads."}},"required":["name","p_name"],"additionalProperties":false,"example":{"name":"Deal","p_name":"Deals","title_attribute_ref":"deal_name","attributes":[{"id":"deal_name","name":"Deal Name","searchable":true,"type":"Text","boundaries":{"required":true,"unique":false}},{"name":"Value","searchable":true,"type":"Number","boundaries":{"required":false,"unique":false}},{"id":"account_manager","name":"Account Manager","searchable":false,"type":"Record","table_reference":"user_datasets","boundaries":{"required":false,"unique":false}},{"name":"Stage","searchable":false,"type":"Select","boundaries":{"required":false,"unique":false},"options":[{"label":"Prospecting","value":"prospecting","index":0},{"label":"Closed Won","value":"closed_won","index":1}]}]}},"CustomEntityDefinitionUpdate":{"type":"object","properties":{"name":{"type":"string","minLength":1,"example":"Deal"},"p_name":{"type":"string","minLength":1,"description":"Plural display name shown in the dashboard UI.","example":"Deals"},"icon":{"type":"string","description":"Dashboard display icon.","example":"Box"},"table":{"type":"string"},"title_attribute_ref":{"type":"string","description":"Attribute ID to use as the display label for records."},"attributes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Attribute ID. Existing attributes can be referenced by their current ID. New attributes may also provide a custom ID; if omitted, Quake generates one from `name` using the same rules as the dashboard API.","example":"account_manager"},"name":{"type":"string","minLength":1},"description":{"type":"string"},"searchable":{"type":"boolean","default":false,"description":"Whether this attribute should be marked as searchable for future search/index optimizations. Defaults to false.","example":false},"type":{"anyOf":[{"type":"string","enum":["Text"]},{"type":"string","enum":["Number"]},{"type":"string","enum":["Checkbox"]},{"type":"string","enum":["Date"]},{"type":"string","enum":["TimeStamp"]},{"type":"string","enum":["Select"]},{"type":"string","enum":["Multi Select"]},{"type":"string","enum":["Record"]},{"type":"string","enum":["Multi Record"]}]},"table_reference":{"type":"string","description":"For `Record` and `Multi Record` attributes, identifies the related source table or entity. Use a native table name such as `user_datasets`, `recruitment_candidates`, `recruitment_jobs`, or `recruitment_clients`, or use `custom_entity:{uuid}` to point at another custom entity in the same dataset. Example: if a `Record` attribute uses `table_reference: \"user_datasets\"`, record payloads should later store one `user_datasets.id` string for that field; `Multi Record` should store an array of `user_datasets.id` strings.","example":"user_datasets"},"optionsCreatable":{"type":"boolean"},"options":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"},"index":{"type":"number"}},"required":["label","value","index"]},"description":"Selectable options. Only present on Select and Multi Select attribute types."},"defaultValue":{"anyOf":[{"type":"string"},{"type":"boolean"},{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"}},"required":["label","value"]}}]},"boundaries":{"type":"object","properties":{"required":{"type":"boolean"},"unique":{"type":"boolean"}},"required":["required","unique"],"description":"Validation rules for this attribute. required: the field must have a value when creating records; unique: the value must be unique across all records of this entity.","example":{"required":false,"unique":false}},"richText":{"type":"boolean"},"dateTimeFormat":{"anyOf":[{"type":"string","enum":["default"]},{"type":"string","enum":["relative"]},{"type":"string","enum":["age_in_years"]}]}},"required":["name","type","boundaries"]},"description":"Full replacement of the attributes array. Existing attributes are matched by ID, then by name, and keep their original ID and type. Omitting an existing attribute deletes it. New attributes may provide a custom `id`; if omitted, Quake generates one from `name` using the same rules as the dashboard API."}},"additionalProperties":false}},"parameters":{}},"webhooks":{}}