openapi: 3.1.0
info:
  title: Worklittle API
  version: 1.0.0
  description: |
    Production Worklittle REST API for job search, public job boards, apply,
    People Search, employer ATS (candidates, employees, email, offers),
    surveys, HR documents, attendance/calendar, webhooks, and agent document tools.

    Authenticate with `Authorization: Bearer sk-wl-api01-...`.
    Public job-board GETs/applies work without a key (IP rate limits).

    Official clients live in the Worklittle monorepo (`packages/sdk-js`, `packages/sdk-python`).
    Public OpenAPI: https://docs.worklittle.com/openapi/openapi.yaml
servers:
  - url: https://api.worklittle.com
security:
  - bearerAuth: []
tags:
  - name: jobs
  - name: boards
  - name: apply
  - name: people
  - name: job-listings
  - name: employer-jobs
  - name: organization
  - name: candidates
  - name: employees
  - name: email-offers
  - name: webhooks
  - name: documents
  - name: attendance
  - name: surveys
  - name: agent-documents
paths:
  /jobs:
    $ref: ./paths/jobs.yaml#/jobs
  /jobs/search:
    $ref: ./paths/jobs.yaml#/jobs
  /jobs/{id}:
    $ref: ./paths/jobs.yaml#/jobById
  /jobs/map:
    $ref: ./paths/jobs.yaml#/jobsMap
  /jobs/stats:
    $ref: ./paths/jobs.yaml#/stats
  /jobs/suggestions:
    $ref: ./paths/jobs.yaml#/jobs
  /jobs/apply:
    $ref: ./paths/platform.yaml#/jobsApply
  /jobs/apply/{id}:
    $ref: ./paths/platform.yaml#/jobsApply
  /jobs/applied:
    $ref: ./paths/platform.yaml#/appliedJobs
  /jobs/applied/{id}:
    $ref: ./paths/platform.yaml#/appliedJobs
  /jobs/saved:
    $ref: ./paths/platform.yaml#/appliedJobsCounts
  /jobs/resumes:
    $ref: ./paths/platform.yaml#/resumes
  /jobs/cover-letters:
    $ref: ./paths/platform.yaml#/coverLetters
  /companies:
    $ref: ./paths/jobs.yaml#/companies
  /account:
    $ref: ./paths/jobs.yaml#/account
  /account/resume:
    $ref: ./paths/jobs.yaml#/accountResume
  /business/jobs/company/{company}:
    $ref: ./job-boards.yaml#/paths/~1job-boards~1{company}~1jobs
  /business/jobs/company/{company}/brand:
    $ref: ./job-boards.yaml#/paths/~1job-boards~1{company}~1board
  /business/jobs/company/{company}/{idOrSlug}:
    $ref: ./job-boards.yaml#/paths/~1job-boards~1{company}~1jobs~1{idOrSlug}
  /business/jobs/company/{company}/{idOrSlug}/json-ld:
    $ref: ./job-boards.yaml#/paths/~1job-boards~1{company}~1jobs~1{idOrSlug}~1json-ld
  /business/jobs/company/{company}/{idOrSlug}/parse-resume:
    $ref: ./job-boards.yaml#/paths/~1job-boards~1{company}~1jobs~1{idOrSlug}~1parse-resume
  /business/jobs/company/{company}/{idOrSlug}/submit-application:
    $ref: ./job-boards.yaml#/paths/~1job-boards~1{company}~1jobs~1{idOrSlug}~1apply
  /people:
    $ref: ./paths/platform.yaml#/people
  /people/{id}/resume:
    $ref: ./paths/platform.yaml#/peopleResume
  /people/{id}/contact:
    $ref: ./paths/platform.yaml#/peopleContact
  /business/jobs:
    $ref: ./paths/platform.yaml#/jobListings
  /business/jobs/{id}:
    $ref: ./paths/platform.yaml#/jobListingById
  /business/jobs/{id}/applications:
    $ref: ./paths/platform.yaml#/jobsPostApplications
  /business/jobs/pipeline-stages:
    $ref: ./paths/platform.yaml#/pipelineStages
  /business/teams:
    $ref: ./paths/platform.yaml#/companyOrganizations
  /business/questions:
    $ref: ./paths/platform.yaml#/interviewQuestions
  /business/candidates:
    $ref: ./paths/platform.yaml#/candidates
  /business/candidates/{id}:
    $ref: ./paths/platform.yaml#/candidateById
  /business/employees:
    $ref: ./paths/platform.yaml#/employees
  /business/employees/{id}:
    $ref: ./paths/platform.yaml#/employeeById
  /business/emails:
    $ref: ./paths/platform.yaml#/emailMessages
  /business/emails/sent:
    $ref: ./paths/platform.yaml#/emailSends
  /business/emails/sent/{id}:
    $ref: ./paths/platform.yaml#/emailSendById
  /usage:
    $ref: ./paths/platform.yaml#/usage
  /business/webhooks:
    $ref: ./paths/platform.yaml#/webhooks
  /business/webhooks/{id}:
    $ref: ./paths/platform.yaml#/webhookById
  /business/documents:
    $ref: ./paths/platform.yaml#/documents
  /business/attendance:
    $ref: ./paths/platform.yaml#/attendance
  /business/surveys:
    $ref: ./paths/platform.yaml#/surveys
  /business/surveys/{id}:
    $ref: ./paths/platform.yaml#/surveyById
  /v1/agent/tools:
    $ref: ./paths/platform.yaml#/agentTools
  /v1/agent/tool:
    $ref: ./paths/platform.yaml#/agentTool
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: sk-wl-api01
  schemas:
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code: { type: string }
            message: { type: string }
            documentation_url:
              type: string
              format: uri
              description: Present on UNAUTHORIZED, FORBIDDEN, WORK_EMAIL_REQUIRED, PAYMENT_REQUIRED, RATE_LIMITED, and QUOTA_EXCEEDED. Points at the Help article for that code.
  parameters:
    id:
      name: id
      in: path
      required: true
      schema: { type: string }
