openapi: 3.0.2
paths:
  /api/v1/components/create_url:
    post:
      summary: Create a embedded component url
      tags:
        - Components
      parameters: []
      operationId: createToken
      requestBody:
        description: Body
        content:
          application/json:
            schema:
              type: object
              properties:
                component:
                  type: string
                  enum:
                    - employees/list
                    - everify/cases
                    - employee/tasks
                options:
                  type: object
                  properties:
                    employee/tasks:
                      type: object
                      properties:
                        employee_id:
                          type: string
                      required:
                        - employee_id
                  required:
                    - employee/tasks
              required:
                - component
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  component:
                    type: string
                    enum:
                      - employees/list
                      - everify/cases
                      - employee/tasks
                  redirect_url:
                    type: string
                  code:
                    type: string
                required:
                  - component
                  - redirect_url
                  - code
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
      security:
        - bearerAuth: []
  /api/v1/employees:
    get:
      summary: List all employees
      tags:
        - Employees
      parameters:
        - name: page
          in: query
          schema:
            default: 1
            type: number
            minimum: 1
        - name: per_page
          in: query
          schema:
            default: 20
            type: number
            minimum: 1
            maximum: 300
        - name: custom_attributes
          in: query
          description: >-
            Stringified JSON to filter employees by custom attributes. Example:
            {"title": "CEO"}
          schema:
            type: string
      operationId: getEmployees
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        first_name:
                          type: string
                        middle_name:
                          type: string
                        last_name:
                          type: string
                        email:
                          type: string
                          nullable: true
                        phone:
                          type: string
                          nullable: true
                        date_of_birth:
                          type: string
                          nullable: true
                        social_security_number:
                          type: string
                          nullable: true
                        has_middle_name:
                          type: boolean
                          nullable: true
                        address:
                          type: object
                          properties:
                            street:
                              type: string
                            secondary:
                              type: string
                              nullable: true
                            city:
                              type: string
                            state:
                              type: string
                            zip:
                              type: string
                              nullable: true
                            country:
                              description: 3 letter country code
                              type: string
                              minLength: 2
                              maxLength: 3
                            full_address:
                              type: string
                              nullable: true
                              description: >-
                                Fully formatted address such as '55 E Jackson
                                Blvd, Chicago, IL 60604, USA'. Required for
                                addresses outside North America.
                          required:
                            - street
                            - city
                            - state
                            - country
                          nullable: true
                        custom_attributes:
                          type: object
                          properties: {}
                          additionalProperties: true
                          description: Custom attribute values
                        created_at:
                          type: string
                          format: date-time
                        updated_at:
                          type: string
                          format: date-time
                      required:
                        - id
                        - first_name
                        - last_name
                        - custom_attributes
                        - created_at
                        - updated_at
                  total:
                    type: number
                required:
                  - data
                  - total
        '400':
          description: '400'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
      security:
        - bearerAuth: []
    post:
      summary: Create an employee
      tags:
        - Employees
      parameters: []
      operationId: createEmployee
      requestBody:
        description: Body
        content:
          application/json:
            schema:
              type: object
              properties:
                first_name:
                  type: string
                middle_name:
                  type: string
                last_name:
                  type: string
                email:
                  type: string
                  nullable: true
                phone:
                  type: string
                  nullable: true
                date_of_birth:
                  type: string
                  nullable: true
                social_security_number:
                  type: string
                  nullable: true
                has_middle_name:
                  type: boolean
                  nullable: true
                address:
                  type: object
                  properties:
                    street:
                      type: string
                    secondary:
                      type: string
                      nullable: true
                    city:
                      type: string
                    state:
                      type: string
                    zip:
                      type: string
                      nullable: true
                    country:
                      description: 3 letter country code
                      type: string
                      minLength: 2
                      maxLength: 3
                    full_address:
                      type: string
                      nullable: true
                      description: >-
                        Fully formatted address such as '55 E Jackson Blvd,
                        Chicago, IL 60604, USA'. Required for addresses outside
                        North America.
                  required:
                    - street
                    - city
                    - state
                    - country
                  nullable: true
                custom_attributes:
                  type: object
                  properties: {}
                  additionalProperties: true
                  nullable: true
                  description: Custom attributes
              required:
                - first_name
                - last_name
              additionalProperties: true
      responses:
        '201':
          description: '201'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  first_name:
                    type: string
                  middle_name:
                    type: string
                  last_name:
                    type: string
                  email:
                    type: string
                    nullable: true
                  phone:
                    type: string
                    nullable: true
                  date_of_birth:
                    type: string
                    nullable: true
                  social_security_number:
                    type: string
                    nullable: true
                  has_middle_name:
                    type: boolean
                    nullable: true
                  address:
                    type: object
                    properties:
                      street:
                        type: string
                      secondary:
                        type: string
                        nullable: true
                      city:
                        type: string
                      state:
                        type: string
                      zip:
                        type: string
                        nullable: true
                      country:
                        description: 3 letter country code
                        type: string
                        minLength: 2
                        maxLength: 3
                      full_address:
                        type: string
                        nullable: true
                        description: >-
                          Fully formatted address such as '55 E Jackson Blvd,
                          Chicago, IL 60604, USA'. Required for addresses
                          outside North America.
                    required:
                      - street
                      - city
                      - state
                      - country
                    nullable: true
                  custom_attributes:
                    type: object
                    properties: {}
                    additionalProperties: true
                    description: Custom attribute values
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
                required:
                  - id
                  - first_name
                  - last_name
                  - custom_attributes
                  - created_at
                  - updated_at
        '400':
          description: '400'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
      security:
        - bearerAuth: []
  /api/v1/employees/{id}:
    get:
      summary: Get an employee by id
      tags:
        - Employees
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      operationId: getEmployee
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  first_name:
                    type: string
                  middle_name:
                    type: string
                  last_name:
                    type: string
                  email:
                    type: string
                    nullable: true
                  phone:
                    type: string
                    nullable: true
                  date_of_birth:
                    type: string
                    nullable: true
                  social_security_number:
                    type: string
                    nullable: true
                  has_middle_name:
                    type: boolean
                    nullable: true
                  address:
                    type: object
                    properties:
                      street:
                        type: string
                      secondary:
                        type: string
                        nullable: true
                      city:
                        type: string
                      state:
                        type: string
                      zip:
                        type: string
                        nullable: true
                      country:
                        description: 3 letter country code
                        type: string
                        minLength: 2
                        maxLength: 3
                      full_address:
                        type: string
                        nullable: true
                        description: >-
                          Fully formatted address such as '55 E Jackson Blvd,
                          Chicago, IL 60604, USA'. Required for addresses
                          outside North America.
                    required:
                      - street
                      - city
                      - state
                      - country
                    nullable: true
                  custom_attributes:
                    type: object
                    properties: {}
                    additionalProperties: true
                    description: Custom attribute values
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
                required:
                  - id
                  - first_name
                  - last_name
                  - custom_attributes
                  - created_at
                  - updated_at
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Employee not found
                required:
                  - message
      security:
        - bearerAuth: []
    patch:
      summary: Update an employee
      tags:
        - Employees
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      operationId: updateEmployee
      requestBody:
        description: Body
        content:
          application/json:
            schema:
              type: object
              properties:
                first_name:
                  type: string
                middle_name:
                  type: string
                last_name:
                  type: string
                email:
                  type: string
                  nullable: true
                phone:
                  type: string
                  nullable: true
                date_of_birth:
                  type: string
                  nullable: true
                  description: Employee's date of birth in ISO-8601 format (YYYY-MM-DD).
                social_security_number:
                  type: string
                  nullable: true
                  description: Employee's SSN in the format of xxx-xx-xxxx.
                has_middle_name:
                  type: boolean
                  nullable: true
                address:
                  type: object
                  properties:
                    street:
                      type: string
                    secondary:
                      type: string
                      nullable: true
                    city:
                      type: string
                    state:
                      type: string
                    zip:
                      type: string
                      nullable: true
                    country:
                      description: 3 letter country code
                      type: string
                      minLength: 2
                      maxLength: 3
                    full_address:
                      type: string
                      nullable: true
                      description: >-
                        Fully formatted address such as '55 E Jackson Blvd,
                        Chicago, IL 60604, USA'. Required for addresses outside
                        North America.
                  required:
                    - street
                    - city
                    - state
                    - country
                  nullable: true
                custom_attributes:
                  type: object
                  properties: {}
                  additionalProperties: true
                  nullable: true
                  description: Custom attributes
              additionalProperties: true
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  first_name:
                    type: string
                  middle_name:
                    type: string
                  last_name:
                    type: string
                  email:
                    type: string
                    nullable: true
                  phone:
                    type: string
                    nullable: true
                  date_of_birth:
                    type: string
                    nullable: true
                  social_security_number:
                    type: string
                    nullable: true
                  has_middle_name:
                    type: boolean
                    nullable: true
                  address:
                    type: object
                    properties:
                      street:
                        type: string
                      secondary:
                        type: string
                        nullable: true
                      city:
                        type: string
                      state:
                        type: string
                      zip:
                        type: string
                        nullable: true
                      country:
                        description: 3 letter country code
                        type: string
                        minLength: 2
                        maxLength: 3
                      full_address:
                        type: string
                        nullable: true
                        description: >-
                          Fully formatted address such as '55 E Jackson Blvd,
                          Chicago, IL 60604, USA'. Required for addresses
                          outside North America.
                    required:
                      - street
                      - city
                      - state
                      - country
                    nullable: true
                  custom_attributes:
                    type: object
                    properties: {}
                    additionalProperties: true
                    description: Custom attribute values
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
                required:
                  - id
                  - first_name
                  - last_name
                  - custom_attributes
                  - created_at
                  - updated_at
        '400':
          description: '400'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Employee not found
                required:
                  - message
      security:
        - bearerAuth: []
    delete:
      summary: Delete an employee by id
      tags:
        - Employees
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      operationId: deleteEmployee
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  first_name:
                    type: string
                  middle_name:
                    type: string
                  last_name:
                    type: string
                  email:
                    type: string
                    nullable: true
                  phone:
                    type: string
                    nullable: true
                  date_of_birth:
                    type: string
                    nullable: true
                  social_security_number:
                    type: string
                    nullable: true
                  has_middle_name:
                    type: boolean
                    nullable: true
                  address:
                    type: object
                    properties:
                      street:
                        type: string
                      secondary:
                        type: string
                        nullable: true
                      city:
                        type: string
                      state:
                        type: string
                      zip:
                        type: string
                        nullable: true
                      country:
                        description: 3 letter country code
                        type: string
                        minLength: 2
                        maxLength: 3
                      full_address:
                        type: string
                        nullable: true
                        description: >-
                          Fully formatted address such as '55 E Jackson Blvd,
                          Chicago, IL 60604, USA'. Required for addresses
                          outside North America.
                    required:
                      - street
                      - city
                      - state
                      - country
                    nullable: true
                  custom_attributes:
                    type: object
                    properties: {}
                    additionalProperties: true
                    description: Custom attribute values
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
                required:
                  - id
                  - first_name
                  - last_name
                  - custom_attributes
                  - created_at
                  - updated_at
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Employee not found
                required:
                  - message
      security:
        - bearerAuth: []
  /api/v1/employees/{id}/onboarding:
    get:
      summary: Get an employee onboarding url
      tags:
        - Employees
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
        - name: assignee_type
          in: query
          schema:
            type: string
            enum:
              - employee
              - employer
        - name: task_ids
          in: query
          description: Comma separated list of task ids
          schema:
            type: string
        - name: locale
          in: query
          description: >-
            Locale code (e.g. en, es, fr). If not provided, the language will be
            selected automatically based on candidate browser language setting
            and form language availability.
          schema:
            type: string
            enum:
              - af
              - ak
              - sq
              - am
              - ar
              - hy
              - as
              - ay
              - az
              - bm
              - bn
              - eu
              - be
              - bho
              - bs
              - bg
              - my
              - ca
              - ceb
              - ckb
              - zh-CN
              - zh-TW
              - co
              - hr
              - cs
              - da
              - dv
              - doi
              - nl
              - en
              - eo
              - et
              - ee
              - fil
              - fi
              - fr
              - gl
              - lg
              - ka
              - de
              - el
              - gu
              - ht
              - ha
              - haw
              - he
              - hi
              - hmn
              - hu
              - is
              - ig
              - ilo
              - id
              - ga
              - it
              - ja
              - jv
              - kn
              - kk
              - km
              - rw
              - kok
              - ko
              - kri
              - ku
              - ky
              - lo
              - la
              - lv
              - ln
              - lt
              - lb
              - mk
              - mai
              - mg
              - ms
              - ml
              - mt
              - mni-Mtei
              - mi
              - mr
              - lus
              - mn
              - ne
              - nso
              - 'no'
              - ny
              - or
              - om
              - ps
              - fa
              - pl
              - pt
              - pa
              - qu
              - ro
              - ru
              - sm
              - sa
              - gd
              - sr
              - sn
              - sd
              - si
              - sk
              - sl
              - so
              - st
              - es
              - su
              - sw
              - sv
              - tg
              - ta
              - tt
              - te
              - th
              - ti
              - ts
              - tr
              - tk
              - uk
              - ur
              - ug
              - uz
              - vi
              - cy
              - fy
              - xh
              - yi
              - yo
              - zu
        - name: redirect_to
          in: query
          description: Redirect to url to send the user after onboarding is complete
          schema:
            type: string
            format: uri
        - name: active_theme_id
          in: query
          description: Custom theme for the onboarding form
          schema:
            type: string
      operationId: getEmployeeOnboardingUrl
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  url:
                    type: string
                required:
                  - url
        '400':
          description: '400'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Employee not found
                required:
                  - message
      security:
        - bearerAuth: []
  /api/v1/placements/preview:
    post:
      summary: Get a preview of a placement and its tasks
      tags:
        - Placements
      parameters: []
      operationId: postPlacementPreview
      requestBody:
        description: Body
        content:
          application/json:
            schema:
              type: object
              properties:
                employee_id:
                  type: string
                employer_id:
                  type: string
                client_id:
                  type: string
                job_id:
                  type: string
                custom_attributes:
                  type: object
                  properties: {}
                  additionalProperties: true
                  nullable: true
                  description: Custom attributes
              required:
                - employee_id
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  employee_id:
                    type: string
                  employer_id:
                    type: string
                    nullable: true
                  client_id:
                    type: string
                    nullable: true
                  job_id:
                    type: string
                    nullable: true
                  custom_attributes:
                    type: object
                    properties: {}
                    additionalProperties: true
                    description: Custom attribute values
                  missing_task_count:
                    type: number
                  progress:
                    type: object
                    properties:
                      forms_required:
                        type: number
                      forms_completed:
                        type: number
                    required:
                      - forms_required
                      - forms_completed
                  form_requirements:
                    type: array
                    items:
                      type: object
                      properties:
                        task_id:
                          type: string
                          nullable: true
                        form:
                          type: object
                          properties:
                            id:
                              type: string
                            name:
                              type: string
                            tags:
                              type: array
                              items:
                                type: object
                                properties:
                                  name:
                                    type: string
                                required:
                                  - name
                            custom_attributes:
                              type: object
                              properties: {}
                              additionalProperties: true
                              description: Custom attribute values
                          required:
                            - id
                            - name
                            - tags
                            - custom_attributes
                      required:
                        - task_id
                        - form
                  created_at:
                    type: string
                    format: date-time
                required:
                  - id
                  - employee_id
                  - employer_id
                  - client_id
                  - job_id
                  - custom_attributes
                  - missing_task_count
                  - progress
                  - suggested_tasks
                  - form_requirements
                  - created_at
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
      security:
        - bearerAuth: []
  /api/v1/placements/{id}:
    get:
      summary: Get a placement by id
      tags:
        - Placements
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      operationId: getPlacement
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  employee_id:
                    type: string
                  employer_id:
                    type: string
                    nullable: true
                  client_id:
                    type: string
                    nullable: true
                  job_id:
                    type: string
                    nullable: true
                  custom_attributes:
                    type: object
                    properties: {}
                    additionalProperties: true
                    description: Custom attribute values
                  missing_task_count:
                    type: number
                  progress:
                    type: object
                    properties:
                      forms_required:
                        type: number
                      forms_completed:
                        type: number
                    required:
                      - forms_required
                      - forms_completed
                  form_requirements:
                    type: array
                    items:
                      type: object
                      properties:
                        task_id:
                          type: string
                          nullable: true
                        form:
                          type: object
                          properties:
                            id:
                              type: string
                            name:
                              type: string
                            tags:
                              type: array
                              items:
                                type: object
                                properties:
                                  name:
                                    type: string
                                required:
                                  - name
                            custom_attributes:
                              type: object
                              properties: {}
                              additionalProperties: true
                              description: Custom attribute values
                          required:
                            - id
                            - name
                            - tags
                            - custom_attributes
                      required:
                        - task_id
                        - form
                  created_at:
                    type: string
                    format: date-time
                required:
                  - id
                  - employee_id
                  - employer_id
                  - client_id
                  - job_id
                  - custom_attributes
                  - missing_task_count
                  - progress
                  - suggested_tasks
                  - form_requirements
                  - created_at
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Placement not found
                required:
                  - message
      security:
        - bearerAuth: []
    patch:
      summary: Update a placement
      tags:
        - Placements
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      operationId: updatePlacement
      requestBody:
        description: Body
        content:
          application/json:
            schema:
              type: object
              properties:
                custom_attributes:
                  type: object
                  properties: {}
                  additionalProperties: true
                  nullable: true
                  description: Custom attributes
                create_tasks:
                  type: boolean
                  description: Create tasks for this placement
              additionalProperties: true
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  employee_id:
                    type: string
                  employer_id:
                    type: string
                    nullable: true
                  client_id:
                    type: string
                    nullable: true
                  job_id:
                    type: string
                    nullable: true
                  custom_attributes:
                    type: object
                    properties: {}
                    additionalProperties: true
                    description: Custom attribute values
                  missing_task_count:
                    type: number
                  progress:
                    type: object
                    properties:
                      forms_required:
                        type: number
                      forms_completed:
                        type: number
                    required:
                      - forms_required
                      - forms_completed
                  suggested_tasks:
                    type: array
                    items:
                      type: object
                      properties:
                        form_id:
                          type: string
                        form_name:
                          type: string
                        task_id:
                          type: string
                          nullable: true
                        form_tags:
                          type: array
                          items:
                            type: object
                            properties:
                              name:
                                type: string
                            required:
                              - name
                      required:
                        - form_id
                        - form_name
                        - task_id
                        - form_tags
                  form_requirements:
                    type: array
                    items:
                      type: object
                      properties:
                        task_id:
                          type: string
                          nullable: true
                        form:
                          type: object
                          properties:
                            id:
                              type: string
                            name:
                              type: string
                            tags:
                              type: array
                              items:
                                type: object
                                properties:
                                  name:
                                    type: string
                                required:
                                  - name
                            custom_attributes:
                              type: object
                              properties: {}
                              additionalProperties: true
                              description: Custom attribute values
                          required:
                            - id
                            - name
                            - tags
                            - custom_attributes
                      required:
                        - task_id
                        - form
                  created_at:
                    type: string
                    format: date-time
                required:
                  - id
                  - employee_id
                  - employer_id
                  - client_id
                  - job_id
                  - custom_attributes
                  - missing_task_count
                  - progress
                  - suggested_tasks
                  - form_requirements
                  - created_at
        '400':
          description: '400'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
        '403':
          description: '403'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Placement not found
                required:
                  - message
      security:
        - bearerAuth: []
    delete:
      summary: Delete a placement by id
      tags:
        - Placements
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      operationId: deletePlacement
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  employee_id:
                    type: string
                  employer_id:
                    type: string
                    nullable: true
                  client_id:
                    type: string
                    nullable: true
                  job_id:
                    type: string
                    nullable: true
                  custom_attributes:
                    type: object
                    properties: {}
                    additionalProperties: true
                    description: Custom attribute values
                  missing_task_count:
                    type: number
                  progress:
                    type: object
                    properties:
                      forms_required:
                        type: number
                      forms_completed:
                        type: number
                    required:
                      - forms_required
                      - forms_completed
                  form_requirements:
                    type: array
                    items:
                      type: object
                      properties:
                        task_id:
                          type: string
                          nullable: true
                        form:
                          type: object
                          properties:
                            id:
                              type: string
                            name:
                              type: string
                            tags:
                              type: array
                              items:
                                type: object
                                properties:
                                  name:
                                    type: string
                                required:
                                  - name
                            custom_attributes:
                              type: object
                              properties: {}
                              additionalProperties: true
                              description: Custom attribute values
                          required:
                            - id
                            - name
                            - tags
                            - custom_attributes
                      required:
                        - task_id
                        - form
                  created_at:
                    type: string
                    format: date-time
                required:
                  - id
                  - employee_id
                  - employer_id
                  - client_id
                  - job_id
                  - custom_attributes
                  - missing_task_count
                  - progress
                  - suggested_tasks
                  - form_requirements
                  - created_at
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Placement not found
                required:
                  - message
      security:
        - bearerAuth: []
  /api/v1/placements:
    get:
      summary: List all placements
      tags:
        - Placements
      parameters:
        - name: page
          in: query
          schema:
            default: 1
            type: number
            minimum: 1
        - name: per_page
          in: query
          schema:
            default: 20
            type: number
            minimum: 1
            maximum: 300
        - name: employee_id
          in: query
          schema:
            type: string
        - name: employer_id
          in: query
          schema:
            type: string
        - name: client_id
          in: query
          schema:
            type: string
        - name: job_id
          in: query
          schema:
            type: string
      operationId: getPlacements
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        employee_id:
                          type: string
                        employer_id:
                          type: string
                          nullable: true
                        client_id:
                          type: string
                          nullable: true
                        job_id:
                          type: string
                          nullable: true
                        custom_attributes:
                          type: object
                          properties: {}
                          additionalProperties: true
                          description: Custom attribute values
                        missing_task_count:
                          type: number
                        progress:
                          type: object
                          properties:
                            forms_required:
                              type: number
                            forms_completed:
                              type: number
                          required:
                            - forms_required
                            - forms_completed
                        form_requirements:
                          type: array
                          items:
                            type: object
                            properties:
                              task_id:
                                type: string
                                nullable: true
                              form:
                                type: object
                                properties:
                                  id:
                                    type: string
                                  name:
                                    type: string
                                  tags:
                                    type: array
                                    items:
                                      type: object
                                      properties:
                                        name:
                                          type: string
                                      required:
                                        - name
                                  custom_attributes:
                                    type: object
                                    properties: {}
                                    additionalProperties: true
                                    description: Custom attribute values
                                required:
                                  - id
                                  - name
                                  - tags
                                  - custom_attributes
                            required:
                              - task_id
                              - form
                        created_at:
                          type: string
                          format: date-time
                      required:
                        - id
                        - employee_id
                        - employer_id
                        - client_id
                        - job_id
                        - custom_attributes
                        - missing_task_count
                        - progress
                        - suggested_tasks
                        - form_requirements
                        - created_at
                  total:
                    type: number
                required:
                  - data
                  - total
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
      security:
        - bearerAuth: []
    post:
      summary: Create an placement
      tags:
        - Placements
      parameters: []
      operationId: createPlacement
      requestBody:
        description: Body
        content:
          application/json:
            schema:
              type: object
              properties:
                employee_id:
                  type: string
                employer_id:
                  type: string
                  nullable: true
                client_id:
                  type: string
                  nullable: true
                job_id:
                  type: string
                  nullable: true
                custom_attributes:
                  type: object
                  properties: {}
                  additionalProperties: true
                  nullable: true
                  description: Custom attributes
                create_tasks:
                  type: boolean
                  description: Create tasks for this placement
                  nullable: true
              required:
                - employee_id
              additionalProperties: true
      responses:
        '201':
          description: '201'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  employee_id:
                    type: string
                  employer_id:
                    type: string
                    nullable: true
                  client_id:
                    type: string
                    nullable: true
                  job_id:
                    type: string
                    nullable: true
                  custom_attributes:
                    type: object
                    properties: {}
                    additionalProperties: true
                    description: Custom attribute values
                  missing_task_count:
                    type: number
                  progress:
                    type: object
                    properties:
                      forms_required:
                        type: number
                      forms_completed:
                        type: number
                    required:
                      - forms_required
                      - forms_completed
                  form_requirements:
                    type: array
                    items:
                      type: object
                      properties:
                        task_id:
                          type: string
                          nullable: true
                        form:
                          type: object
                          properties:
                            id:
                              type: string
                            name:
                              type: string
                            tags:
                              type: array
                              items:
                                type: object
                                properties:
                                  name:
                                    type: string
                                required:
                                  - name
                            custom_attributes:
                              type: object
                              properties: {}
                              additionalProperties: true
                              description: Custom attribute values
                          required:
                            - id
                            - name
                            - tags
                            - custom_attributes
                      required:
                        - task_id
                        - form
                  created_at:
                    type: string
                    format: date-time
                required:
                  - id
                  - employee_id
                  - employer_id
                  - client_id
                  - job_id
                  - custom_attributes
                  - missing_task_count
                  - progress
                  - suggested_tasks
                  - form_requirements
                  - created_at
        '400':
          description: '400'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
        '409':
          description: '409'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Placement already exists
                required:
                  - message
      security:
        - bearerAuth: []
  /api/v1/employers:
    get:
      summary: List all employers
      tags:
        - Employers
      parameters:
        - name: page
          in: query
          schema:
            default: 1
            type: number
            minimum: 1
        - name: per_page
          in: query
          schema:
            default: 20
            type: number
            minimum: 1
            maximum: 300
        - name: custom_attributes
          in: query
          description: >-
            Stringified JSON to filter employers by custom attributes. Example:
            {"location": "Boston"}
          schema:
            type: string
      operationId: getEmployers
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        name:
                          type: string
                        ein:
                          type: string
                          nullable: true
                        dba_name:
                          type: string
                          nullable: true
                        phone:
                          type: string
                          nullable: true
                        employee_count:
                          type: number
                          nullable: true
                        entity_structure:
                          type: string
                          enum:
                            - sole_proprietorship
                            - partnership
                            - llc
                            - corporation
                            - nonprofit
                            - cooperative
                            - professional_corporation
                          nullable: true
                        naics_code:
                          type: string
                          nullable: true
                        address:
                          type: object
                          properties:
                            street:
                              type: string
                            secondary:
                              type: string
                              nullable: true
                            city:
                              type: string
                            state:
                              type: string
                            zip:
                              type: string
                              nullable: true
                            country:
                              description: 3 letter country code
                              type: string
                              minLength: 2
                              maxLength: 3
                            full_address:
                              type: string
                              nullable: true
                              description: >-
                                Fully formatted address such as '55 E Jackson
                                Blvd, Chicago, IL 60604, USA'. Required for
                                addresses outside North America.
                          required:
                            - street
                            - city
                            - state
                            - country
                          nullable: true
                        custom_attributes:
                          type: object
                          properties: {}
                          additionalProperties: true
                          description: Custom attribute values
                        active_theme_id:
                          type: string
                          nullable: true
                        created_at:
                          type: string
                          format: date-time
                        updated_at:
                          type: string
                          format: date-time
                      required:
                        - id
                        - name
                        - custom_attributes
                        - created_at
                        - updated_at
                  total:
                    type: number
                required:
                  - data
                  - total
        '400':
          description: '400'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
      security:
        - bearerAuth: []
    post:
      summary: Create an employer
      tags:
        - Employers
      parameters: []
      operationId: createEmployer
      requestBody:
        description: Body
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                ein:
                  type: string
                  nullable: true
                dba_name:
                  type: string
                  nullable: true
                phone:
                  type: string
                  nullable: true
                employee_count:
                  type: number
                  nullable: true
                entity_structure:
                  type: string
                  enum:
                    - sole_proprietorship
                    - partnership
                    - llc
                    - corporation
                    - nonprofit
                    - cooperative
                    - professional_corporation
                  nullable: true
                naics_code:
                  type: string
                  nullable: true
                address:
                  type: object
                  properties:
                    street:
                      type: string
                    secondary:
                      type: string
                      nullable: true
                    city:
                      type: string
                    state:
                      type: string
                    zip:
                      type: string
                      nullable: true
                    country:
                      description: 3 letter country code
                      type: string
                      minLength: 2
                      maxLength: 3
                    full_address:
                      type: string
                      nullable: true
                      description: >-
                        Fully formatted address such as '55 E Jackson Blvd,
                        Chicago, IL 60604, USA'. Required for addresses outside
                        North America.
                  required:
                    - street
                    - city
                    - state
                    - country
                  nullable: true
                custom_attributes:
                  type: object
                  properties: {}
                  additionalProperties: true
                  nullable: true
                  description: Custom attributes
                active_theme_id:
                  type: string
                  nullable: true
              required:
                - name
              additionalProperties: true
      responses:
        '201':
          description: '201'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  ein:
                    type: string
                    nullable: true
                  dba_name:
                    type: string
                    nullable: true
                  phone:
                    type: string
                    nullable: true
                  employee_count:
                    type: number
                    nullable: true
                  entity_structure:
                    type: string
                    enum:
                      - sole_proprietorship
                      - partnership
                      - llc
                      - corporation
                      - nonprofit
                      - cooperative
                      - professional_corporation
                    nullable: true
                  naics_code:
                    type: string
                    nullable: true
                  address:
                    type: object
                    properties:
                      street:
                        type: string
                      secondary:
                        type: string
                        nullable: true
                      city:
                        type: string
                      state:
                        type: string
                      zip:
                        type: string
                        nullable: true
                      country:
                        description: 3 letter country code
                        type: string
                        minLength: 2
                        maxLength: 3
                      full_address:
                        type: string
                        nullable: true
                        description: >-
                          Fully formatted address such as '55 E Jackson Blvd,
                          Chicago, IL 60604, USA'. Required for addresses
                          outside North America.
                    required:
                      - street
                      - city
                      - state
                      - country
                    nullable: true
                  custom_attributes:
                    type: object
                    properties: {}
                    additionalProperties: true
                    description: Custom attribute values
                  active_theme_id:
                    type: string
                    nullable: true
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
                required:
                  - id
                  - name
                  - custom_attributes
                  - created_at
                  - updated_at
        '400':
          description: '400'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
      security:
        - bearerAuth: []
  /api/v1/employers/{id}:
    get:
      summary: Get an employer by id
      tags:
        - Employers
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      operationId: getEmployer
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  ein:
                    type: string
                    nullable: true
                  dba_name:
                    type: string
                    nullable: true
                  phone:
                    type: string
                    nullable: true
                  employee_count:
                    type: number
                    nullable: true
                  entity_structure:
                    type: string
                    enum:
                      - sole_proprietorship
                      - partnership
                      - llc
                      - corporation
                      - nonprofit
                      - cooperative
                      - professional_corporation
                    nullable: true
                  naics_code:
                    type: string
                    nullable: true
                  address:
                    type: object
                    properties:
                      street:
                        type: string
                      secondary:
                        type: string
                        nullable: true
                      city:
                        type: string
                      state:
                        type: string
                      zip:
                        type: string
                        nullable: true
                      country:
                        description: 3 letter country code
                        type: string
                        minLength: 2
                        maxLength: 3
                      full_address:
                        type: string
                        nullable: true
                        description: >-
                          Fully formatted address such as '55 E Jackson Blvd,
                          Chicago, IL 60604, USA'. Required for addresses
                          outside North America.
                    required:
                      - street
                      - city
                      - state
                      - country
                    nullable: true
                  custom_attributes:
                    type: object
                    properties: {}
                    additionalProperties: true
                    description: Custom attribute values
                  active_theme_id:
                    type: string
                    nullable: true
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
                required:
                  - id
                  - name
                  - custom_attributes
                  - created_at
                  - updated_at
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Employer not found
                required:
                  - message
      security:
        - bearerAuth: []
    patch:
      summary: Update an employer
      tags:
        - Employers
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      operationId: updateEmployer
      requestBody:
        description: Body
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                ein:
                  type: string
                  nullable: true
                dba_name:
                  type: string
                  nullable: true
                phone:
                  type: string
                  nullable: true
                employee_count:
                  type: number
                  nullable: true
                entity_structure:
                  type: string
                  enum:
                    - sole_proprietorship
                    - partnership
                    - llc
                    - corporation
                    - nonprofit
                    - cooperative
                    - professional_corporation
                  nullable: true
                naics_code:
                  type: string
                  nullable: true
                address:
                  type: object
                  properties:
                    street:
                      type: string
                    secondary:
                      type: string
                      nullable: true
                    city:
                      type: string
                    state:
                      type: string
                    zip:
                      type: string
                      nullable: true
                    country:
                      description: 3 letter country code
                      type: string
                      minLength: 2
                      maxLength: 3
                    full_address:
                      type: string
                      nullable: true
                      description: >-
                        Fully formatted address such as '55 E Jackson Blvd,
                        Chicago, IL 60604, USA'. Required for addresses outside
                        North America.
                  required:
                    - street
                    - city
                    - state
                    - country
                  nullable: true
                custom_attributes:
                  type: object
                  properties: {}
                  additionalProperties: true
                  nullable: true
                  description: Custom attributes
                active_theme_id:
                  type: string
                  nullable: true
              additionalProperties: true
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  ein:
                    type: string
                    nullable: true
                  dba_name:
                    type: string
                    nullable: true
                  phone:
                    type: string
                    nullable: true
                  employee_count:
                    type: number
                    nullable: true
                  entity_structure:
                    type: string
                    enum:
                      - sole_proprietorship
                      - partnership
                      - llc
                      - corporation
                      - nonprofit
                      - cooperative
                      - professional_corporation
                    nullable: true
                  naics_code:
                    type: string
                    nullable: true
                  address:
                    type: object
                    properties:
                      street:
                        type: string
                      secondary:
                        type: string
                        nullable: true
                      city:
                        type: string
                      state:
                        type: string
                      zip:
                        type: string
                        nullable: true
                      country:
                        description: 3 letter country code
                        type: string
                        minLength: 2
                        maxLength: 3
                      full_address:
                        type: string
                        nullable: true
                        description: >-
                          Fully formatted address such as '55 E Jackson Blvd,
                          Chicago, IL 60604, USA'. Required for addresses
                          outside North America.
                    required:
                      - street
                      - city
                      - state
                      - country
                    nullable: true
                  custom_attributes:
                    type: object
                    properties: {}
                    additionalProperties: true
                    description: Custom attribute values
                  active_theme_id:
                    type: string
                    nullable: true
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
                required:
                  - id
                  - name
                  - custom_attributes
                  - created_at
                  - updated_at
        '400':
          description: '400'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Employer not found
                required:
                  - message
      security:
        - bearerAuth: []
    delete:
      summary: Delete an employer
      tags:
        - Employers
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      operationId: deleteEmployer
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  ein:
                    type: string
                    nullable: true
                  dba_name:
                    type: string
                    nullable: true
                  phone:
                    type: string
                    nullable: true
                  employee_count:
                    type: number
                    nullable: true
                  entity_structure:
                    type: string
                    enum:
                      - sole_proprietorship
                      - partnership
                      - llc
                      - corporation
                      - nonprofit
                      - cooperative
                      - professional_corporation
                    nullable: true
                  naics_code:
                    type: string
                    nullable: true
                  address:
                    type: object
                    properties:
                      street:
                        type: string
                      secondary:
                        type: string
                        nullable: true
                      city:
                        type: string
                      state:
                        type: string
                      zip:
                        type: string
                        nullable: true
                      country:
                        description: 3 letter country code
                        type: string
                        minLength: 2
                        maxLength: 3
                      full_address:
                        type: string
                        nullable: true
                        description: >-
                          Fully formatted address such as '55 E Jackson Blvd,
                          Chicago, IL 60604, USA'. Required for addresses
                          outside North America.
                    required:
                      - street
                      - city
                      - state
                      - country
                    nullable: true
                  custom_attributes:
                    type: object
                    properties: {}
                    additionalProperties: true
                    description: Custom attribute values
                  active_theme_id:
                    type: string
                    nullable: true
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
                required:
                  - id
                  - name
                  - custom_attributes
                  - created_at
                  - updated_at
        '400':
          description: '400'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Employer not found
                required:
                  - message
      security:
        - bearerAuth: []
  /api/v1/clients:
    get:
      summary: List all clients
      tags:
        - Clients
      parameters:
        - name: page
          in: query
          schema:
            default: 1
            type: number
            minimum: 1
        - name: per_page
          in: query
          schema:
            default: 20
            type: number
            minimum: 1
            maximum: 300
        - name: custom_attributes
          in: query
          description: >-
            Stringified JSON to filter clients by custom attributes. Example:
            {"pay_rate": 12.5}
          schema:
            type: string
      operationId: getClients
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        name:
                          type: string
                        created_at:
                          type: string
                          format: date-time
                        updated_at:
                          type: string
                          format: date-time
                        custom_attributes:
                          type: object
                          properties: {}
                          additionalProperties: true
                          description: Custom attribute values
                      required:
                        - id
                        - name
                        - created_at
                        - updated_at
                        - custom_attributes
                  total:
                    type: number
                required:
                  - data
                  - total
        '400':
          description: '400'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
      security:
        - bearerAuth: []
    post:
      summary: Create a client
      tags:
        - Clients
      parameters: []
      operationId: createClient
      requestBody:
        description: Body
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                custom_attributes:
                  type: object
                  properties: {}
                  additionalProperties: true
                  nullable: true
                  description: Custom attributes
              required:
                - name
              additionalProperties: true
      responses:
        '201':
          description: '201'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
                  custom_attributes:
                    type: object
                    properties: {}
                    additionalProperties: true
                    description: Custom attribute values
                required:
                  - id
                  - name
                  - created_at
                  - updated_at
                  - custom_attributes
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
      security:
        - bearerAuth: []
  /api/v1/clients/{id}:
    get:
      summary: Get a client by id
      tags:
        - Clients
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      operationId: getClient
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
                  custom_attributes:
                    type: object
                    properties: {}
                    additionalProperties: true
                    description: Custom attribute values
                required:
                  - id
                  - name
                  - created_at
                  - updated_at
                  - custom_attributes
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Client not found
                required:
                  - message
      security:
        - bearerAuth: []
    patch:
      summary: Update a client
      tags:
        - Clients
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      operationId: updateClient
      requestBody:
        description: Body
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                custom_attributes:
                  type: object
                  properties: {}
                  additionalProperties: true
                  nullable: true
                  description: Custom attributes
              additionalProperties: true
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
                  custom_attributes:
                    type: object
                    properties: {}
                    additionalProperties: true
                    description: Custom attribute values
                required:
                  - id
                  - name
                  - created_at
                  - updated_at
                  - custom_attributes
        '400':
          description: '400'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Client not found
                required:
                  - message
      security:
        - bearerAuth: []
    delete:
      summary: Delete a client
      tags:
        - Clients
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      operationId: deleteClient
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
                  custom_attributes:
                    type: object
                    properties: {}
                    additionalProperties: true
                    description: Custom attribute values
                required:
                  - id
                  - name
                  - created_at
                  - updated_at
                  - custom_attributes
        '400':
          description: '400'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Client not found
                required:
                  - message
      security:
        - bearerAuth: []
  /api/v1/jobs:
    get:
      summary: List all jobs
      tags:
        - Jobs
      parameters:
        - name: page
          in: query
          schema:
            default: 1
            type: number
            minimum: 1
        - name: per_page
          in: query
          schema:
            default: 20
            type: number
            minimum: 1
            maximum: 300
        - name: custom_attributes
          in: query
          description: >-
            Stringified JSON to filter jobs by custom attributes. Example:
            {"pay_rate": 12.5}
          schema:
            type: string
      operationId: getJobs
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        name:
                          type: string
                        address:
                          type: object
                          properties:
                            street:
                              type: string
                            secondary:
                              type: string
                              nullable: true
                            city:
                              type: string
                            state:
                              type: string
                            zip:
                              type: string
                              nullable: true
                            country:
                              description: 3 letter country code
                              type: string
                              minLength: 2
                              maxLength: 3
                            full_address:
                              type: string
                              nullable: true
                              description: >-
                                Fully formatted address such as '55 E Jackson
                                Blvd, Chicago, IL 60604, USA'. Required for
                                addresses outside North America.
                          required:
                            - street
                            - city
                            - state
                            - country
                          nullable: true
                        created_at:
                          type: string
                          format: date-time
                        updated_at:
                          type: string
                          format: date-time
                        custom_attributes:
                          type: object
                          properties: {}
                          additionalProperties: true
                          description: Custom attribute values
                      required:
                        - id
                        - name
                        - created_at
                        - updated_at
                        - custom_attributes
                  total:
                    type: number
                required:
                  - data
                  - total
        '400':
          description: '400'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
      security:
        - bearerAuth: []
    post:
      summary: Create a job
      tags:
        - Jobs
      parameters: []
      operationId: createJob
      requestBody:
        description: Body
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                address:
                  type: object
                  properties:
                    street:
                      type: string
                    secondary:
                      type: string
                      nullable: true
                    city:
                      type: string
                    state:
                      type: string
                    zip:
                      type: string
                      nullable: true
                    country:
                      description: 3 letter country code
                      type: string
                      minLength: 2
                      maxLength: 3
                    full_address:
                      type: string
                      nullable: true
                      description: >-
                        Fully formatted address such as '55 E Jackson Blvd,
                        Chicago, IL 60604, USA'. Required for addresses outside
                        North America.
                  required:
                    - street
                    - city
                    - state
                    - country
                  nullable: true
                custom_attributes:
                  type: object
                  properties: {}
                  additionalProperties: true
                  nullable: true
                  description: Custom attributes
              required:
                - name
              additionalProperties: true
      responses:
        '201':
          description: '201'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  address:
                    type: object
                    properties:
                      street:
                        type: string
                      secondary:
                        type: string
                        nullable: true
                      city:
                        type: string
                      state:
                        type: string
                      zip:
                        type: string
                        nullable: true
                      country:
                        description: 3 letter country code
                        type: string
                        minLength: 2
                        maxLength: 3
                      full_address:
                        type: string
                        nullable: true
                        description: >-
                          Fully formatted address such as '55 E Jackson Blvd,
                          Chicago, IL 60604, USA'. Required for addresses
                          outside North America.
                    required:
                      - street
                      - city
                      - state
                      - country
                    nullable: true
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
                  custom_attributes:
                    type: object
                    properties: {}
                    additionalProperties: true
                    description: Custom attribute values
                required:
                  - id
                  - name
                  - created_at
                  - updated_at
                  - custom_attributes
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
      security:
        - bearerAuth: []
  /api/v1/jobs/{id}:
    get:
      summary: Get a job by id
      tags:
        - Jobs
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      operationId: getJob
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  address:
                    type: object
                    properties:
                      street:
                        type: string
                      secondary:
                        type: string
                        nullable: true
                      city:
                        type: string
                      state:
                        type: string
                      zip:
                        type: string
                        nullable: true
                      country:
                        description: 3 letter country code
                        type: string
                        minLength: 2
                        maxLength: 3
                      full_address:
                        type: string
                        nullable: true
                        description: >-
                          Fully formatted address such as '55 E Jackson Blvd,
                          Chicago, IL 60604, USA'. Required for addresses
                          outside North America.
                    required:
                      - street
                      - city
                      - state
                      - country
                    nullable: true
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
                  custom_attributes:
                    type: object
                    properties: {}
                    additionalProperties: true
                    description: Custom attribute values
                required:
                  - id
                  - name
                  - created_at
                  - updated_at
                  - custom_attributes
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Job not found
                required:
                  - message
      security:
        - bearerAuth: []
    patch:
      summary: Update a job
      tags:
        - Jobs
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      operationId: updateJob
      requestBody:
        description: Body
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                address:
                  type: object
                  properties:
                    street:
                      type: string
                    secondary:
                      type: string
                      nullable: true
                    city:
                      type: string
                    state:
                      type: string
                    zip:
                      type: string
                      nullable: true
                    country:
                      description: 3 letter country code
                      type: string
                      minLength: 2
                      maxLength: 3
                    full_address:
                      type: string
                      nullable: true
                      description: >-
                        Fully formatted address such as '55 E Jackson Blvd,
                        Chicago, IL 60604, USA'. Required for addresses outside
                        North America.
                  required:
                    - street
                    - city
                    - state
                    - country
                  nullable: true
                custom_attributes:
                  type: object
                  properties: {}
                  additionalProperties: true
                  nullable: true
                  description: Custom attributes
              additionalProperties: true
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  address:
                    type: object
                    properties:
                      street:
                        type: string
                      secondary:
                        type: string
                        nullable: true
                      city:
                        type: string
                      state:
                        type: string
                      zip:
                        type: string
                        nullable: true
                      country:
                        description: 3 letter country code
                        type: string
                        minLength: 2
                        maxLength: 3
                      full_address:
                        type: string
                        nullable: true
                        description: >-
                          Fully formatted address such as '55 E Jackson Blvd,
                          Chicago, IL 60604, USA'. Required for addresses
                          outside North America.
                    required:
                      - street
                      - city
                      - state
                      - country
                    nullable: true
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
                  custom_attributes:
                    type: object
                    properties: {}
                    additionalProperties: true
                    description: Custom attribute values
                required:
                  - id
                  - name
                  - created_at
                  - updated_at
                  - custom_attributes
        '400':
          description: '400'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Job not found
                required:
                  - message
      security:
        - bearerAuth: []
    delete:
      summary: Delete a job
      tags:
        - Jobs
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      operationId: deleteJob
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  address:
                    type: object
                    properties:
                      street:
                        type: string
                      secondary:
                        type: string
                        nullable: true
                      city:
                        type: string
                      state:
                        type: string
                      zip:
                        type: string
                        nullable: true
                      country:
                        description: 3 letter country code
                        type: string
                        minLength: 2
                        maxLength: 3
                      full_address:
                        type: string
                        nullable: true
                        description: >-
                          Fully formatted address such as '55 E Jackson Blvd,
                          Chicago, IL 60604, USA'. Required for addresses
                          outside North America.
                    required:
                      - street
                      - city
                      - state
                      - country
                    nullable: true
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
                  custom_attributes:
                    type: object
                    properties: {}
                    additionalProperties: true
                    description: Custom attribute values
                required:
                  - id
                  - name
                  - created_at
                  - updated_at
                  - custom_attributes
        '400':
          description: '400'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Job not found
                required:
                  - message
      security:
        - bearerAuth: []
  /api/v1/tasks:
    get:
      summary: List all tasks
      tags:
        - Tasks
      parameters:
        - name: page
          in: query
          schema:
            default: 1
            type: number
            minimum: 1
        - name: per_page
          in: query
          schema:
            default: 20
            type: number
            minimum: 1
            maximum: 300
        - name: employee_id
          in: query
          schema:
            type: string
        - name: employer_id
          in: query
          schema:
            type: string
        - name: client_id
          in: query
          schema:
            type: string
        - name: job_id
          in: query
          schema:
            type: string
        - name: expired_at_lte
          in: query
          description: >-
            Query tasks by expiration time. Tasks with expiration time equal or
            earlier than the provided timestamp are returned.
          schema:
            type: string
            format: date-time
            nullable: true
        - name: expired_at_gte
          in: query
          description: >-
            Query tasks by expiration time. Tasks with expiration time equal or
            later than the provided timestamp are returned.
          schema:
            type: string
            format: date-time
            nullable: true
      operationId: getTasks
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        form_id:
                          type: string
                        form_custom_attributes:
                          type: object
                          properties: {}
                          additionalProperties: true
                          description: Custom attribute values
                        name:
                          type: string
                          description: Name of the form.
                        employee_id:
                          type: string
                        employer_id:
                          type: string
                          nullable: true
                        client_id:
                          type: string
                          nullable: true
                        job_id:
                          type: string
                          nullable: true
                        status:
                          type: string
                          enum:
                            - requires_action
                            - completed
                            - expired
                        next_action:
                          type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - employer_action
                                - employee_action
                                - system_action
                              nullable: true
                          required:
                            - type
                        expired_at:
                          type: string
                          format: date-time
                          description: >-
                            Expiration time is re-evaluated at the time of task
                            completion. If your integration reads the field
                            value before a task is completed, please note that
                            the value may change when the task is completed.
                          nullable: true
                        deletion_scheduled_at:
                          type: string
                          format: date-time
                          description: >-
                            When this field is set, the task will be
                            automatically deleted at the specified time.
                          nullable: true
                        deletion_allowed_at:
                          type: string
                          format: date-time
                          description: >-
                            When this field is set, the task cannot be deleted
                            until the specified time.
                          nullable: true
                        due_at:
                          type: string
                          format: date-time
                          nullable: true
                        progress:
                          type: object
                          properties:
                            percent:
                              type: number
                            numerator:
                              type: number
                            denominator:
                              type: number
                          required:
                            - percent
                            - numerator
                            - denominator
                        subtasks:
                          type: array
                          items:
                            type: object
                            properties:
                              id:
                                type: string
                              form_page_id:
                                type: string
                              assignee_type:
                                type: string
                                enum:
                                  - employee
                                  - employer
                              progress:
                                type: object
                                properties:
                                  percent:
                                    type: number
                                  numerator:
                                    type: number
                                  denominator:
                                    type: number
                                required:
                                  - percent
                                  - numerator
                                  - denominator
                            required:
                              - id
                              - form_page_id
                              - assignee_type
                              - progress
                        tags:
                          type: array
                          items:
                            type: object
                            properties:
                              name:
                                type: string
                            required:
                              - name
                        created_at:
                          type: string
                          format: date-time
                        updated_at:
                          type: string
                          format: date-time
                      required:
                        - id
                        - form_id
                        - form_custom_attributes
                        - name
                        - employee_id
                        - employer_id
                        - client_id
                        - job_id
                        - status
                        - next_action
                        - expired_at
                        - deletion_scheduled_at
                        - deletion_allowed_at
                        - due_at
                        - progress
                        - subtasks
                        - tags
                        - created_at
                        - updated_at
                  total:
                    type: number
                required:
                  - data
                  - total
        '400':
          description: '400'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
      security:
        - bearerAuth: []
    post:
      summary: Create a task
      tags:
        - Tasks
      parameters:
        - name: allow_duplicate
          in: query
          schema:
            type: string
            enum:
              - 'true'
              - 'false'
              - 'True'
              - 'False'
      operationId: createTask
      requestBody:
        description: Body
        content:
          application/json:
            schema:
              type: object
              properties:
                form_id:
                  type: string
                employee_id:
                  type: string
                employer_id:
                  type: string
                  nullable: true
                client_id:
                  type: string
                  nullable: true
                job_id:
                  type: string
                  nullable: true
                placement_id:
                  type: string
                  description: >-
                    Tasks are designed to be reusable across multiple
                    placements. However, if your form uses placement attribute
                    scoping, you must provide a placement id here so that
                    Onboarded can retrieve the scoped value from your placement.
                  nullable: true
                expired_at:
                  description: >-
                    Datetime for when the task expires. If not included in the
                    request payload, default value from the form will be used
                    (when applicable). Set this property to `null` if you do not
                    want this task to inherit form default expiration time.
                  type: string
                  format: date-time
                  nullable: true
                due_at:
                  description: >-
                    Datetime for when the task is due. If not included in the
                    request payload, default value from the form will be used
                    (when applicable). Set this property to `null` if you do not
                    want this task to inherit form default due time.
                  type: string
                  format: date-time
                  nullable: true
                deletion_scheduled_at:
                  description: >-
                    Set this field to automatically delete a task at a specific
                    time in the future. This can be helpful when certain tasks
                    need to be deleted after a specific retention period.
                  type: string
                  format: date-time
                  nullable: true
                deletion_allowed_at:
                  description: >-
                    Set this field to prevent a task from being deleted until
                    the specified time. This can be helpful when ensuring
                    completed tasks are retained for compliance reasons.
                  type: string
                  format: date-time
                  nullable: true
              required:
                - form_id
                - employee_id
      responses:
        '201':
          description: '201'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  form_id:
                    type: string
                  form_custom_attributes:
                    type: object
                    properties: {}
                    additionalProperties: true
                    description: Custom attribute values
                  name:
                    type: string
                    description: Name of the form.
                  employee_id:
                    type: string
                  employer_id:
                    type: string
                    nullable: true
                  client_id:
                    type: string
                    nullable: true
                  job_id:
                    type: string
                    nullable: true
                  status:
                    type: string
                    enum:
                      - requires_action
                      - completed
                      - expired
                  next_action:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - employer_action
                          - employee_action
                          - system_action
                        nullable: true
                    required:
                      - type
                  expired_at:
                    type: string
                    format: date-time
                    description: >-
                      Expiration time is re-evaluated at the time of task
                      completion. If your integration reads the field value
                      before a task is completed, please note that the value may
                      change when the task is completed.
                    nullable: true
                  deletion_scheduled_at:
                    type: string
                    format: date-time
                    description: >-
                      When this field is set, the task will be automatically
                      deleted at the specified time.
                    nullable: true
                  deletion_allowed_at:
                    type: string
                    format: date-time
                    description: >-
                      When this field is set, the task cannot be deleted until
                      the specified time.
                    nullable: true
                  due_at:
                    type: string
                    format: date-time
                    nullable: true
                  progress:
                    type: object
                    properties:
                      percent:
                        type: number
                      numerator:
                        type: number
                      denominator:
                        type: number
                    required:
                      - percent
                      - numerator
                      - denominator
                  subtasks:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        form_page_id:
                          type: string
                        assignee_type:
                          type: string
                          enum:
                            - employee
                            - employer
                        progress:
                          type: object
                          properties:
                            percent:
                              type: number
                            numerator:
                              type: number
                            denominator:
                              type: number
                          required:
                            - percent
                            - numerator
                            - denominator
                      required:
                        - id
                        - form_page_id
                        - assignee_type
                        - progress
                  tags:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                      required:
                        - name
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
                required:
                  - id
                  - form_id
                  - form_custom_attributes
                  - name
                  - employee_id
                  - employer_id
                  - client_id
                  - job_id
                  - status
                  - next_action
                  - expired_at
                  - deletion_scheduled_at
                  - deletion_allowed_at
                  - due_at
                  - progress
                  - subtasks
                  - tags
                  - created_at
                  - updated_at
        '400':
          description: '400'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
        '409':
          description: '409'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Duplicate task found
                required:
                  - message
      security:
        - bearerAuth: []
  /api/v1/tasks/{id}:
    get:
      summary: Get a task
      tags:
        - Tasks
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      operationId: getTask
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  form_id:
                    type: string
                  form_custom_attributes:
                    type: object
                    properties: {}
                    additionalProperties: true
                    description: Custom attribute values
                  name:
                    type: string
                    description: Name of the form.
                  employee_id:
                    type: string
                  employer_id:
                    type: string
                    nullable: true
                  client_id:
                    type: string
                    nullable: true
                  job_id:
                    type: string
                    nullable: true
                  status:
                    type: string
                    enum:
                      - requires_action
                      - completed
                      - expired
                  next_action:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - employer_action
                          - employee_action
                          - system_action
                        nullable: true
                    required:
                      - type
                  expired_at:
                    type: string
                    format: date-time
                    description: >-
                      Expiration time is re-evaluated at the time of task
                      completion. If your integration reads the field value
                      before a task is completed, please note that the value may
                      change when the task is completed.
                    nullable: true
                  deletion_scheduled_at:
                    type: string
                    format: date-time
                    description: >-
                      When this field is set, the task will be automatically
                      deleted at the specified time.
                    nullable: true
                  deletion_allowed_at:
                    type: string
                    format: date-time
                    description: >-
                      When this field is set, the task cannot be deleted until
                      the specified time.
                    nullable: true
                  due_at:
                    type: string
                    format: date-time
                    nullable: true
                  progress:
                    type: object
                    properties:
                      percent:
                        type: number
                      numerator:
                        type: number
                      denominator:
                        type: number
                    required:
                      - percent
                      - numerator
                      - denominator
                  subtasks:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        form_page_id:
                          type: string
                        assignee_type:
                          type: string
                          enum:
                            - employee
                            - employer
                        progress:
                          type: object
                          properties:
                            percent:
                              type: number
                            numerator:
                              type: number
                            denominator:
                              type: number
                          required:
                            - percent
                            - numerator
                            - denominator
                      required:
                        - id
                        - form_page_id
                        - assignee_type
                        - progress
                  tags:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                      required:
                        - name
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
                required:
                  - id
                  - form_id
                  - form_custom_attributes
                  - name
                  - employee_id
                  - employer_id
                  - client_id
                  - job_id
                  - status
                  - next_action
                  - expired_at
                  - deletion_scheduled_at
                  - deletion_allowed_at
                  - due_at
                  - progress
                  - subtasks
                  - tags
                  - created_at
                  - updated_at
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Task not found
                required:
                  - message
      security:
        - bearerAuth: []
    patch:
      summary: Update a task
      tags:
        - Tasks
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      operationId: updateTask
      requestBody:
        description: Body
        content:
          application/json:
            schema:
              type: object
              properties:
                expired_at:
                  description: >-
                    When the form has its own expiration settings, the effective
                    expired_at of a task is set to the earliest time between
                    task expired_at and the form's expiration settings.
                  type: string
                  format: date-time
                  nullable: true
                deletion_scheduled_at:
                  description: >-
                    Set this field to automatically delete a task at a specific
                    time in the future. This can be helpful when certain tasks
                    need to be deleted after a specific retention period.
                  type: string
                  format: date-time
                  nullable: true
                deletion_allowed_at:
                  description: >-
                    Set this field to prevent a task from being deleted until
                    the specified time. This can be helpful when ensuring
                    completed tasks are retained for compliance reasons.
                  type: string
                  format: date-time
                  nullable: true
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  form_id:
                    type: string
                  form_custom_attributes:
                    type: object
                    properties: {}
                    additionalProperties: true
                    description: Custom attribute values
                  name:
                    type: string
                    description: Name of the form.
                  employee_id:
                    type: string
                  employer_id:
                    type: string
                    nullable: true
                  client_id:
                    type: string
                    nullable: true
                  job_id:
                    type: string
                    nullable: true
                  status:
                    type: string
                    enum:
                      - requires_action
                      - completed
                      - expired
                  next_action:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - employer_action
                          - employee_action
                          - system_action
                        nullable: true
                    required:
                      - type
                  expired_at:
                    type: string
                    format: date-time
                    description: >-
                      Expiration time is re-evaluated at the time of task
                      completion. If your integration reads the field value
                      before a task is completed, please note that the value may
                      change when the task is completed.
                    nullable: true
                  deletion_scheduled_at:
                    type: string
                    format: date-time
                    description: >-
                      When this field is set, the task will be automatically
                      deleted at the specified time.
                    nullable: true
                  deletion_allowed_at:
                    type: string
                    format: date-time
                    description: >-
                      When this field is set, the task cannot be deleted until
                      the specified time.
                    nullable: true
                  due_at:
                    type: string
                    format: date-time
                    nullable: true
                  progress:
                    type: object
                    properties:
                      percent:
                        type: number
                      numerator:
                        type: number
                      denominator:
                        type: number
                    required:
                      - percent
                      - numerator
                      - denominator
                  subtasks:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        form_page_id:
                          type: string
                        assignee_type:
                          type: string
                          enum:
                            - employee
                            - employer
                        progress:
                          type: object
                          properties:
                            percent:
                              type: number
                            numerator:
                              type: number
                            denominator:
                              type: number
                          required:
                            - percent
                            - numerator
                            - denominator
                      required:
                        - id
                        - form_page_id
                        - assignee_type
                        - progress
                  tags:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                      required:
                        - name
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
                required:
                  - id
                  - form_id
                  - form_custom_attributes
                  - name
                  - employee_id
                  - employer_id
                  - client_id
                  - job_id
                  - status
                  - next_action
                  - expired_at
                  - deletion_scheduled_at
                  - deletion_allowed_at
                  - due_at
                  - progress
                  - subtasks
                  - tags
                  - created_at
                  - updated_at
        '400':
          description: '400'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
        '403':
          description: '403'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Task not found
                required:
                  - message
      security:
        - bearerAuth: []
    delete:
      summary: Delete a task
      tags:
        - Tasks
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      operationId: deleteTask
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  form_id:
                    type: string
                  form_custom_attributes:
                    type: object
                    properties: {}
                    additionalProperties: true
                    description: Custom attribute values
                  name:
                    type: string
                    description: Name of the form.
                  employee_id:
                    type: string
                  employer_id:
                    type: string
                    nullable: true
                  client_id:
                    type: string
                    nullable: true
                  job_id:
                    type: string
                    nullable: true
                  status:
                    type: string
                    enum:
                      - requires_action
                      - completed
                      - expired
                  next_action:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - employer_action
                          - employee_action
                          - system_action
                        nullable: true
                    required:
                      - type
                  expired_at:
                    type: string
                    format: date-time
                    description: >-
                      Expiration time is re-evaluated at the time of task
                      completion. If your integration reads the field value
                      before a task is completed, please note that the value may
                      change when the task is completed.
                    nullable: true
                  deletion_scheduled_at:
                    type: string
                    format: date-time
                    description: >-
                      When this field is set, the task will be automatically
                      deleted at the specified time.
                    nullable: true
                  deletion_allowed_at:
                    type: string
                    format: date-time
                    description: >-
                      When this field is set, the task cannot be deleted until
                      the specified time.
                    nullable: true
                  due_at:
                    type: string
                    format: date-time
                    nullable: true
                  progress:
                    type: object
                    properties:
                      percent:
                        type: number
                      numerator:
                        type: number
                      denominator:
                        type: number
                    required:
                      - percent
                      - numerator
                      - denominator
                  subtasks:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        form_page_id:
                          type: string
                        assignee_type:
                          type: string
                          enum:
                            - employee
                            - employer
                        progress:
                          type: object
                          properties:
                            percent:
                              type: number
                            numerator:
                              type: number
                            denominator:
                              type: number
                          required:
                            - percent
                            - numerator
                            - denominator
                      required:
                        - id
                        - form_page_id
                        - assignee_type
                        - progress
                  tags:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                      required:
                        - name
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
                required:
                  - id
                  - form_id
                  - form_custom_attributes
                  - name
                  - employee_id
                  - employer_id
                  - client_id
                  - job_id
                  - status
                  - next_action
                  - expired_at
                  - deletion_scheduled_at
                  - deletion_allowed_at
                  - due_at
                  - progress
                  - subtasks
                  - tags
                  - created_at
                  - updated_at
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Task not found
                required:
                  - message
      security:
        - bearerAuth: []
  /api/v1/tasks/{id}/fields:
    get:
      summary: Get a task's fields
      tags:
        - Tasks
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
        - name: include_sensitive_info
          in: query
          description: >-
            Set this field to false to receive masked values ("***") for
            sensitive personal data such as social security number.
          schema:
            default: 'true'
            type: string
            enum:
              - 'true'
              - 'false'
              - 'True'
              - 'False'
      operationId: getTaskFields
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  fields:
                    type: array
                    items:
                      type: object
                      properties:
                        type:
                          type: string
                        path:
                          type: string
                        label:
                          type: object
                          properties:
                            en:
                              type: string
                              description: Label for the field, in english (if available)
                              nullable: true
                          required:
                            - en
                        value:
                          description: The value of the field
                      required:
                        - type
                        - path
                        - label
                required:
                  - fields
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Task not found
                required:
                  - message
      security:
        - bearerAuth: []
    patch:
      summary: Update a task's fields
      tags:
        - Tasks
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      operationId: updateTaskFields
      requestBody:
        description: Body
        content:
          application/json:
            schema:
              type: object
              properties:
                fields:
                  type: array
                  items:
                    type: object
                    properties:
                      path:
                        type: string
                      value:
                        description: The value of the field
                    required:
                      - path
              required:
                - fields
      responses:
        '200':
          description: '200'
        '400':
          description: '400'
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: array
                    items:
                      type: string
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Task not found
                required:
                  - message
      security:
        - bearerAuth: []
  /api/v1/tasks/{id}/pdf:
    get:
      summary: Get a task pdf
      tags:
        - Tasks
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      operationId: getTaskPdf
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: string
                format: binary
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Task not found
                required:
                  - message
      security:
        - bearerAuth: []
  /api/v1/tasks/{id}/onboarding:
    get:
      summary: Get a task onboarding url
      tags:
        - Tasks
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
        - name: assignee_type
          in: query
          required: true
          schema:
            type: string
            enum:
              - employee
              - employer
        - name: locale
          in: query
          description: Locale code (e.g. en, es, fr)
          schema:
            default: en
            type: string
            minLength: 2
            maxLength: 2
        - name: redirect_to
          in: query
          description: Redirect to url to send the user after onboarding is complete
          schema:
            type: string
            format: uri
      operationId: geTaskOnboardingUrl
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  url:
                    type: string
                required:
                  - url
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Task not found
                required:
                  - message
      security:
        - bearerAuth: []
  /api/v1/tasks/{id}/task_change_requests:
    post:
      summary: Request changes to a completed task
      tags:
        - Task Change Requests
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      operationId: createTaskChangeRequest
      requestBody:
        description: Body
        content:
          application/json:
            schema:
              type: object
              properties:
                starting_section_id:
                  type: string
                  description: >-
                    Starting section for the task change request. When
                    specified, the change request will require users to resubmit
                    answers for this section and all subsequent sections.
      responses:
        '200':
          description: '200'
        '201':
          description: '201'
        '400':
          description: '400'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Task not found
                required:
                  - message
      security:
        - bearerAuth: []
  /api/v1/forms:
    get:
      summary: List all forms
      tags:
        - Forms
      parameters:
        - name: page
          in: query
          schema:
            default: 1
            type: number
            minimum: 1
        - name: per_page
          in: query
          schema:
            default: 20
            type: number
            minimum: 1
            maximum: 300
        - name: name
          in: query
          description: Filter forms by name
          schema:
            type: string
        - name: tags
          in: query
          description: Filter forms by comma-separated tag names
          schema:
            type: string
      operationId: getForms
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        name:
                          type: string
                        custom_attributes:
                          type: object
                          properties: {}
                          additionalProperties: true
                          description: Custom attribute values
                        form_pages:
                          type: array
                          items:
                            type: object
                            properties:
                              id:
                                type: string
                              description:
                                type: string
                                nullable: true
                              assignee_type:
                                type: string
                                enum:
                                  - employee
                                  - employer
                                  - system
                              form_fields:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                    type:
                                      type: string
                                    path:
                                      type: string
                                    rule:
                                      type: object
                                      properties: {}
                                      additionalProperties: true
                                      nullable: true
                                    translations:
                                      type: object
                                      additionalProperties:
                                        type: object
                                        additionalProperties:
                                          type: string
                                      nullable: true
                                      description: Field translations (optionally expanded)
                                  required:
                                    - id
                                    - type
                                    - path
                                    - rule
                            required:
                              - id
                              - description
                              - assignee_type
                              - form_fields
                        tags:
                          type: array
                          items:
                            type: object
                            properties:
                              name:
                                type: string
                            required:
                              - name
                      required:
                        - id
                        - name
                        - custom_attributes
                        - form_pages
                        - tags
                  total:
                    type: number
                required:
                  - data
                  - total
      security:
        - bearerAuth: []
  /api/v1/forms/{id}:
    get:
      summary: Get a form by id
      tags:
        - Forms
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      operationId: getForm
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  custom_attributes:
                    type: object
                    properties: {}
                    additionalProperties: true
                    description: Custom attribute values
                  form_pages:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        description:
                          type: string
                          nullable: true
                        assignee_type:
                          type: string
                          enum:
                            - employee
                            - employer
                            - system
                        form_fields:
                          type: array
                          items:
                            type: object
                            properties:
                              id:
                                type: string
                              type:
                                type: string
                              path:
                                type: string
                              rule:
                                type: object
                                properties: {}
                                additionalProperties: true
                                nullable: true
                              translations:
                                type: object
                                additionalProperties:
                                  type: object
                                  additionalProperties:
                                    type: string
                                nullable: true
                                description: Field translations (optionally expanded)
                            required:
                              - id
                              - type
                              - path
                              - rule
                      required:
                        - id
                        - description
                        - assignee_type
                        - form_fields
                  tags:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                      required:
                        - name
                required:
                  - id
                  - name
                  - custom_attributes
                  - form_pages
                  - tags
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Form not found
                required:
                  - message
      security:
        - bearerAuth: []
  /api/v1/files/{id}:
    get:
      summary: Get a file by id
      tags:
        - Files
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      operationId: getFile
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  url:
                    type: string
                    description: Signed URL to the file, expires in 5 minutes
                required:
                  - url
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Form not found
                required:
                  - message
      security:
        - bearerAuth: []
  /api/v1/themes:
    get:
      summary: List all themes
      tags:
        - Themes
      parameters: []
      operationId: listThemes
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        name:
                          type: string
                        light:
                          type: object
                          properties:
                            logo:
                              type: string
                              nullable: true
                            show_header:
                              type: boolean
                              nullable: true
                            show_form_name:
                              type: boolean
                              nullable: true
                            show_updated_fields_count:
                              type: boolean
                              nullable: true
                            next_button_text:
                              type: string
                              nullable: true
                            back_button_text:
                              type: string
                              nullable: true
                            custom_background:
                              type: string
                              nullable: true
                            custom_foreground:
                              type: string
                              nullable: true
                            primary_background:
                              type: string
                              nullable: true
                            primary_foreground:
                              type: string
                              nullable: true
                            secondary_background:
                              type: string
                              nullable: true
                            secondary_foreground:
                              type: string
                              nullable: true
                            progress:
                              type: string
                              nullable: true
                            border:
                              type: string
                              nullable: true
                            radius:
                              type: string
                              nullable: true
                        dark:
                          type: object
                          properties:
                            logo:
                              type: string
                              nullable: true
                            show_header:
                              type: boolean
                              nullable: true
                            show_form_name:
                              type: boolean
                              nullable: true
                            show_updated_fields_count:
                              type: boolean
                              nullable: true
                            next_button_text:
                              type: string
                              nullable: true
                            back_button_text:
                              type: string
                              nullable: true
                            custom_background:
                              type: string
                              nullable: true
                            custom_foreground:
                              type: string
                              nullable: true
                            primary_background:
                              type: string
                              nullable: true
                            primary_foreground:
                              type: string
                              nullable: true
                            secondary_background:
                              type: string
                              nullable: true
                            secondary_foreground:
                              type: string
                              nullable: true
                            progress:
                              type: string
                              nullable: true
                            border:
                              type: string
                              nullable: true
                            radius:
                              type: string
                              nullable: true
                        created_at:
                          type: string
                          format: date-time
                        updated_at:
                          type: string
                          format: date-time
                      required:
                        - id
                        - name
                        - created_at
                        - updated_at
                  total:
                    type: number
                required:
                  - data
                  - total
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
      security:
        - bearerAuth: []
    post:
      summary: Create a theme
      tags:
        - Themes
      parameters: []
      operationId: createTheme
      requestBody:
        description: Body
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                light:
                  type: object
                  properties:
                    logo:
                      type: string
                      nullable: true
                    show_header:
                      type: boolean
                      nullable: true
                    show_form_name:
                      type: boolean
                      nullable: true
                    show_updated_fields_count:
                      type: boolean
                      nullable: true
                    next_button_text:
                      type: string
                      nullable: true
                    back_button_text:
                      type: string
                      nullable: true
                    custom_background:
                      type: string
                      nullable: true
                    custom_foreground:
                      type: string
                      nullable: true
                    primary_background:
                      type: string
                      nullable: true
                    primary_foreground:
                      type: string
                      nullable: true
                    secondary_background:
                      type: string
                      nullable: true
                    secondary_foreground:
                      type: string
                      nullable: true
                    progress:
                      type: string
                      nullable: true
                    border:
                      type: string
                      nullable: true
                    radius:
                      type: string
                      nullable: true
                dark:
                  type: object
                  properties:
                    logo:
                      type: string
                      nullable: true
                    show_header:
                      type: boolean
                      nullable: true
                    show_form_name:
                      type: boolean
                      nullable: true
                    show_updated_fields_count:
                      type: boolean
                      nullable: true
                    next_button_text:
                      type: string
                      nullable: true
                    back_button_text:
                      type: string
                      nullable: true
                    custom_background:
                      type: string
                      nullable: true
                    custom_foreground:
                      type: string
                      nullable: true
                    primary_background:
                      type: string
                      nullable: true
                    primary_foreground:
                      type: string
                      nullable: true
                    secondary_background:
                      type: string
                      nullable: true
                    secondary_foreground:
                      type: string
                      nullable: true
                    progress:
                      type: string
                      nullable: true
                    border:
                      type: string
                      nullable: true
                    radius:
                      type: string
                      nullable: true
              required:
                - name
      responses:
        '201':
          description: '201'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  light:
                    type: object
                    properties:
                      logo:
                        type: string
                        nullable: true
                      show_header:
                        type: boolean
                        nullable: true
                      show_form_name:
                        type: boolean
                        nullable: true
                      show_updated_fields_count:
                        type: boolean
                        nullable: true
                      next_button_text:
                        type: string
                        nullable: true
                      back_button_text:
                        type: string
                        nullable: true
                      custom_background:
                        type: string
                        nullable: true
                      custom_foreground:
                        type: string
                        nullable: true
                      primary_background:
                        type: string
                        nullable: true
                      primary_foreground:
                        type: string
                        nullable: true
                      secondary_background:
                        type: string
                        nullable: true
                      secondary_foreground:
                        type: string
                        nullable: true
                      progress:
                        type: string
                        nullable: true
                      border:
                        type: string
                        nullable: true
                      radius:
                        type: string
                        nullable: true
                  dark:
                    type: object
                    properties:
                      logo:
                        type: string
                        nullable: true
                      show_header:
                        type: boolean
                        nullable: true
                      show_form_name:
                        type: boolean
                        nullable: true
                      show_updated_fields_count:
                        type: boolean
                        nullable: true
                      next_button_text:
                        type: string
                        nullable: true
                      back_button_text:
                        type: string
                        nullable: true
                      custom_background:
                        type: string
                        nullable: true
                      custom_foreground:
                        type: string
                        nullable: true
                      primary_background:
                        type: string
                        nullable: true
                      primary_foreground:
                        type: string
                        nullable: true
                      secondary_background:
                        type: string
                        nullable: true
                      secondary_foreground:
                        type: string
                        nullable: true
                      progress:
                        type: string
                        nullable: true
                      border:
                        type: string
                        nullable: true
                      radius:
                        type: string
                        nullable: true
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
                required:
                  - id
                  - name
                  - created_at
                  - updated_at
        '400':
          description: '400'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
      security:
        - bearerAuth: []
  /api/v1/themes/{id}:
    get:
      summary: Get a theme by id
      tags:
        - Themes
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      operationId: getTheme
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  light:
                    type: object
                    properties:
                      logo:
                        type: string
                        nullable: true
                      show_header:
                        type: boolean
                        nullable: true
                      show_form_name:
                        type: boolean
                        nullable: true
                      show_updated_fields_count:
                        type: boolean
                        nullable: true
                      next_button_text:
                        type: string
                        nullable: true
                      back_button_text:
                        type: string
                        nullable: true
                      custom_background:
                        type: string
                        nullable: true
                      custom_foreground:
                        type: string
                        nullable: true
                      primary_background:
                        type: string
                        nullable: true
                      primary_foreground:
                        type: string
                        nullable: true
                      secondary_background:
                        type: string
                        nullable: true
                      secondary_foreground:
                        type: string
                        nullable: true
                      progress:
                        type: string
                        nullable: true
                      border:
                        type: string
                        nullable: true
                      radius:
                        type: string
                        nullable: true
                  dark:
                    type: object
                    properties:
                      logo:
                        type: string
                        nullable: true
                      show_header:
                        type: boolean
                        nullable: true
                      show_form_name:
                        type: boolean
                        nullable: true
                      show_updated_fields_count:
                        type: boolean
                        nullable: true
                      next_button_text:
                        type: string
                        nullable: true
                      back_button_text:
                        type: string
                        nullable: true
                      custom_background:
                        type: string
                        nullable: true
                      custom_foreground:
                        type: string
                        nullable: true
                      primary_background:
                        type: string
                        nullable: true
                      primary_foreground:
                        type: string
                        nullable: true
                      secondary_background:
                        type: string
                        nullable: true
                      secondary_foreground:
                        type: string
                        nullable: true
                      progress:
                        type: string
                        nullable: true
                      border:
                        type: string
                        nullable: true
                      radius:
                        type: string
                        nullable: true
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
                required:
                  - id
                  - name
                  - created_at
                  - updated_at
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Theme not found
                required:
                  - message
      security:
        - bearerAuth: []
    patch:
      summary: Update a theme
      tags:
        - Themes
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      operationId: updateTheme
      requestBody:
        description: Body
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  nullable: true
                light:
                  type: object
                  properties:
                    logo:
                      type: string
                      nullable: true
                    show_header:
                      type: boolean
                      nullable: true
                    show_form_name:
                      type: boolean
                      nullable: true
                    show_updated_fields_count:
                      type: boolean
                      nullable: true
                    next_button_text:
                      type: string
                      nullable: true
                    back_button_text:
                      type: string
                      nullable: true
                    custom_background:
                      type: string
                      nullable: true
                    custom_foreground:
                      type: string
                      nullable: true
                    primary_background:
                      type: string
                      nullable: true
                    primary_foreground:
                      type: string
                      nullable: true
                    secondary_background:
                      type: string
                      nullable: true
                    secondary_foreground:
                      type: string
                      nullable: true
                    progress:
                      type: string
                      nullable: true
                    border:
                      type: string
                      nullable: true
                    radius:
                      type: string
                      nullable: true
                dark:
                  type: object
                  properties:
                    logo:
                      type: string
                      nullable: true
                    show_header:
                      type: boolean
                      nullable: true
                    show_form_name:
                      type: boolean
                      nullable: true
                    show_updated_fields_count:
                      type: boolean
                      nullable: true
                    next_button_text:
                      type: string
                      nullable: true
                    back_button_text:
                      type: string
                      nullable: true
                    custom_background:
                      type: string
                      nullable: true
                    custom_foreground:
                      type: string
                      nullable: true
                    primary_background:
                      type: string
                      nullable: true
                    primary_foreground:
                      type: string
                      nullable: true
                    secondary_background:
                      type: string
                      nullable: true
                    secondary_foreground:
                      type: string
                      nullable: true
                    progress:
                      type: string
                      nullable: true
                    border:
                      type: string
                      nullable: true
                    radius:
                      type: string
                      nullable: true
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  light:
                    type: object
                    properties:
                      logo:
                        type: string
                        nullable: true
                      show_header:
                        type: boolean
                        nullable: true
                      show_form_name:
                        type: boolean
                        nullable: true
                      show_updated_fields_count:
                        type: boolean
                        nullable: true
                      next_button_text:
                        type: string
                        nullable: true
                      back_button_text:
                        type: string
                        nullable: true
                      custom_background:
                        type: string
                        nullable: true
                      custom_foreground:
                        type: string
                        nullable: true
                      primary_background:
                        type: string
                        nullable: true
                      primary_foreground:
                        type: string
                        nullable: true
                      secondary_background:
                        type: string
                        nullable: true
                      secondary_foreground:
                        type: string
                        nullable: true
                      progress:
                        type: string
                        nullable: true
                      border:
                        type: string
                        nullable: true
                      radius:
                        type: string
                        nullable: true
                  dark:
                    type: object
                    properties:
                      logo:
                        type: string
                        nullable: true
                      show_header:
                        type: boolean
                        nullable: true
                      show_form_name:
                        type: boolean
                        nullable: true
                      show_updated_fields_count:
                        type: boolean
                        nullable: true
                      next_button_text:
                        type: string
                        nullable: true
                      back_button_text:
                        type: string
                        nullable: true
                      custom_background:
                        type: string
                        nullable: true
                      custom_foreground:
                        type: string
                        nullable: true
                      primary_background:
                        type: string
                        nullable: true
                      primary_foreground:
                        type: string
                        nullable: true
                      secondary_background:
                        type: string
                        nullable: true
                      secondary_foreground:
                        type: string
                        nullable: true
                      progress:
                        type: string
                        nullable: true
                      border:
                        type: string
                        nullable: true
                      radius:
                        type: string
                        nullable: true
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
                required:
                  - id
                  - name
                  - created_at
                  - updated_at
        '400':
          description: '400'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Theme not found
                required:
                  - message
      security:
        - bearerAuth: []
    delete:
      summary: Delete a theme
      tags:
        - Themes
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      operationId: deleteTheme
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  light:
                    type: object
                    properties:
                      logo:
                        type: string
                        nullable: true
                      show_header:
                        type: boolean
                        nullable: true
                      show_form_name:
                        type: boolean
                        nullable: true
                      show_updated_fields_count:
                        type: boolean
                        nullable: true
                      next_button_text:
                        type: string
                        nullable: true
                      back_button_text:
                        type: string
                        nullable: true
                      custom_background:
                        type: string
                        nullable: true
                      custom_foreground:
                        type: string
                        nullable: true
                      primary_background:
                        type: string
                        nullable: true
                      primary_foreground:
                        type: string
                        nullable: true
                      secondary_background:
                        type: string
                        nullable: true
                      secondary_foreground:
                        type: string
                        nullable: true
                      progress:
                        type: string
                        nullable: true
                      border:
                        type: string
                        nullable: true
                      radius:
                        type: string
                        nullable: true
                  dark:
                    type: object
                    properties:
                      logo:
                        type: string
                        nullable: true
                      show_header:
                        type: boolean
                        nullable: true
                      show_form_name:
                        type: boolean
                        nullable: true
                      show_updated_fields_count:
                        type: boolean
                        nullable: true
                      next_button_text:
                        type: string
                        nullable: true
                      back_button_text:
                        type: string
                        nullable: true
                      custom_background:
                        type: string
                        nullable: true
                      custom_foreground:
                        type: string
                        nullable: true
                      primary_background:
                        type: string
                        nullable: true
                      primary_foreground:
                        type: string
                        nullable: true
                      secondary_background:
                        type: string
                        nullable: true
                      secondary_foreground:
                        type: string
                        nullable: true
                      progress:
                        type: string
                        nullable: true
                      border:
                        type: string
                        nullable: true
                      radius:
                        type: string
                        nullable: true
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
                required:
                  - id
                  - name
                  - created_at
                  - updated_at
        '400':
          description: '400'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Theme not found
                required:
                  - message
      security:
        - bearerAuth: []
  /api/v1/custom_properties:
    get:
      summary: List all custom properties
      tags:
        - Custom Properties
      parameters:
        - name: name
          in: query
          schema:
            type: string
        - name: entity_type
          in: query
          schema:
            type: string
            enum:
              - employee
              - employer
              - placement
              - form
              - client
              - job
        - name: path
          in: query
          schema:
            type: string
        - name: status
          in: query
          schema:
            type: string
            enum:
              - active
              - deprecated
      operationId: listCustomProperties
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        name:
                          type: string
                        label:
                          type: string
                        entity_type:
                          type: string
                          enum:
                            - employee
                            - employer
                            - placement
                            - form
                            - client
                            - job
                        scalar_type:
                          type: string
                          enum:
                            - string
                            - boolean
                            - date
                            - datetime
                            - integer
                            - decimal
                            - address
                        path:
                          type: string
                        created_at:
                          type: string
                          format: date-time
                        updated_at:
                          type: string
                          format: date-time
                      required:
                        - id
                        - name
                        - label
                        - entity_type
                        - scalar_type
                        - path
                        - created_at
                        - updated_at
                  total:
                    type: number
                required:
                  - data
                  - total
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
      security:
        - bearerAuth: []
    post:
      summary: Create a custom property
      tags:
        - Custom Properties
      parameters: []
      operationId: createCustomProperty
      requestBody:
        description: Body
        content:
          application/json:
            schema:
              type: object
              properties:
                entity_type:
                  type: string
                  enum:
                    - employee
                    - employer
                    - placement
                    - form
                    - client
                    - job
                name:
                  type: string
                label:
                  type: string
                scalar_type:
                  type: string
                  enum:
                    - string
                    - boolean
                    - date
                    - datetime
                    - integer
                    - decimal
                    - address
              required:
                - entity_type
                - name
                - label
                - scalar_type
      responses:
        '201':
          description: '201'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  label:
                    type: string
                  entity_type:
                    type: string
                    enum:
                      - employee
                      - employer
                      - placement
                      - form
                      - client
                      - job
                  scalar_type:
                    type: string
                    enum:
                      - string
                      - boolean
                      - date
                      - datetime
                      - integer
                      - decimal
                      - address
                  path:
                    type: string
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
                required:
                  - id
                  - name
                  - label
                  - entity_type
                  - scalar_type
                  - path
                  - created_at
                  - updated_at
        '400':
          description: '400'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
      security:
        - bearerAuth: []
  /api/v1/custom_properties/{id}:
    get:
      summary: Get a custom property by id
      tags:
        - Custom Properties
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      operationId: getCustomProperty
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  label:
                    type: string
                  entity_type:
                    type: string
                    enum:
                      - employee
                      - employer
                      - placement
                      - form
                      - client
                      - job
                  scalar_type:
                    type: string
                    enum:
                      - string
                      - boolean
                      - date
                      - datetime
                      - integer
                      - decimal
                      - address
                  path:
                    type: string
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
                required:
                  - id
                  - name
                  - label
                  - entity_type
                  - scalar_type
                  - path
                  - created_at
                  - updated_at
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Custom Property not found
                required:
                  - message
      security:
        - bearerAuth: []
    delete:
      summary: Delete a custom property
      tags:
        - Custom Properties
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      operationId: deleteCustomProperty
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  label:
                    type: string
                  entity_type:
                    type: string
                    enum:
                      - employee
                      - employer
                      - placement
                      - form
                      - client
                      - job
                  scalar_type:
                    type: string
                    enum:
                      - string
                      - boolean
                      - date
                      - datetime
                      - integer
                      - decimal
                      - address
                  path:
                    type: string
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
                required:
                  - id
                  - name
                  - label
                  - entity_type
                  - scalar_type
                  - path
                  - created_at
                  - updated_at
        '400':
          description: '400'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Theme not found
                required:
                  - message
      security:
        - bearerAuth: []
  /api/v1/custom_properties/{id}/deprecate:
    post:
      summary: Deprecate a custom property
      tags:
        - Custom Properties
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      operationId: deprecateCustomProperty
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  label:
                    type: string
                  entity_type:
                    type: string
                    enum:
                      - employee
                      - employer
                      - placement
                      - form
                      - client
                      - job
                  scalar_type:
                    type: string
                    enum:
                      - string
                      - boolean
                      - date
                      - datetime
                      - integer
                      - decimal
                      - address
                  path:
                    type: string
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
                required:
                  - id
                  - name
                  - label
                  - entity_type
                  - scalar_type
                  - path
                  - created_at
                  - updated_at
        '400':
          description: '400'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Custom Property not found
                required:
                  - message
      security:
        - bearerAuth: []
  /api/v1/magic_links:
    post:
      summary: Generate a magic link
      tags:
        - Magic Links
      parameters: []
      operationId: createMagicLink
      requestBody:
        description: Body
        content:
          application/json:
            schema:
              type: object
              properties:
                user_email:
                  type: string
                  format: email
                expire_in:
                  type: integer
                  minimum: 1
                  maximum: 86400
                  description: Expiration time in seconds. Maximum is 86400 (1 day).
                redirect_path:
                  description: >-
                    Optional redirect path within the dashboard. Must be either
                    '/dashboard' (home page) or '/employees/ee_xxx' (employee
                    details view)
                  default: /dashboard
                  type: string
                  nullable: true
              required:
                - user_email
                - expire_in
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  url:
                    type: string
                    format: uri
                  expire_at:
                    type: string
                    format: date-time
                required:
                  - url
                  - expire_at
        '400':
          description: '400'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - Not authorized
                required:
                  - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    enum:
                      - User not found
                required:
                  - message
      security:
        - bearerAuth: []
info:
  title: Onboarded API
  version: 0.0.1
security:
  - bearerAuth: []
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
servers:
  - url: https://app.onboarded.com
tags:
  - name: Components
    description: Components APIs
  - name: Employees
    description: Employees APIs
  - name: Employers
    description: Employers APIs
  - name: Clients
    description: Clients APIs
  - name: Jobs
    description: Jobs APIs
  - name: Placements
    description: Placements APIs
  - name: Tasks
    description: Tasks APIs
  - name: Task Change Requests
    description: Task Change Requests APIs
  - name: Forms
    description: Forms APIs
  - name: Files
    description: Files APIs
  - name: Themes
    description: Themes APIs
  - name: Custom Properties
    description: Custom Properties APIs
  - name: Magic Links
    description: Magic Links APIs
