Salsa Workers API

Employees and contractors.

OpenAPI Specification

salsa-workers-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Salsa Payroll Companies Workers API
  description: Representative OpenAPI description of the Salsa embedded payroll REST API. Salsa is partner-gated payroll infrastructure - approved platform partners receive separate sandbox and production Bearer API keys and use these endpoints to provision employers and workers, run payroll, disburse worker payments, configure tax, and manage webhooks for US and Canada. This is a faithful, representative subset of the surface documented at https://docs.salsa.dev/reference and is not the vendor's official machine specification.
  termsOfService: https://www.salsa.dev/legal
  contact:
    name: Salsa Support
    url: https://docs.salsa.dev/
  version: rest-v1
servers:
- url: https://api.salsa.dev/api/rest/v1
  description: Production (partner production API key)
- url: https://api.sandbox.salsa.dev/api/rest/v1
  description: Sandbox (partner sandbox API key)
security:
- bearerAuth: []
tags:
- name: Workers
  description: Employees and contractors.
paths:
  /employers/{employerId}/workers:
    parameters:
    - $ref: '#/components/parameters/EmployerId'
    post:
      operationId: createWorker
      tags:
      - Workers
      summary: Create a worker.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkerCreate'
      responses:
        '201':
          description: Worker created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Worker'
    get:
      operationId: listWorkers
      tags:
      - Workers
      summary: Retrieve an employer's workers.
      responses:
        '200':
          description: A list of workers.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Worker'
  /employers/{employerId}/workers/{workerId}:
    parameters:
    - $ref: '#/components/parameters/EmployerId'
    - $ref: '#/components/parameters/WorkerId'
    get:
      operationId: getWorker
      tags:
      - Workers
      summary: Retrieve a worker.
      responses:
        '200':
          description: The worker.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Worker'
    patch:
      operationId: updateWorker
      tags:
      - Workers
      summary: Update a worker.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkerCreate'
      responses:
        '200':
          description: The updated worker.
    delete:
      operationId: deleteWorker
      tags:
      - Workers
      summary: Delete a worker.
      responses:
        '204':
          description: Deleted.
  /employers/{employerId}/workers/{workerId}/contracts:
    parameters:
    - $ref: '#/components/parameters/EmployerId'
    - $ref: '#/components/parameters/WorkerId'
    get:
      operationId: listWorkerContracts
      tags:
      - Workers
      summary: List a worker's contracts.
      responses:
        '200':
          description: A list of contracts.
    post:
      operationId: createWorkerContract
      tags:
      - Workers
      summary: Create a worker contract (W-2 employee or 1099 contractor terms).
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '201':
          description: Contract created.
  /employers/{employerId}/workers/{workerId}/bank-accounts:
    parameters:
    - $ref: '#/components/parameters/EmployerId'
    - $ref: '#/components/parameters/WorkerId'
    get:
      operationId: listWorkerBankAccounts
      tags:
      - Workers
      summary: List a worker's bank accounts.
      responses:
        '200':
          description: A list of bank accounts.
    post:
      operationId: createWorkerBankAccount
      tags:
      - Workers
      summary: Create a bank account for a worker.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '201':
          description: Bank account created.
components:
  schemas:
    WorkerCreate:
      type: object
      required:
      - firstName
      - lastName
      - workerType
      properties:
        firstName:
          type: string
        lastName:
          type: string
        email:
          type: string
          format: email
        workerType:
          type: string
          enum:
          - EMPLOYEE
          - CONTRACTOR
    Worker:
      type: object
      properties:
        id:
          type: string
        employerId:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        workerType:
          type: string
          enum:
          - EMPLOYEE
          - CONTRACTOR
        onboardingStatus:
          type: string
  parameters:
    EmployerId:
      name: employerId
      in: path
      required: true
      description: The employer (company) identifier.
      schema:
        type: string
    WorkerId:
      name: workerId
      in: path
      required: true
      description: The worker identifier.
      schema:
        type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Partner Bearer API key. Approved Salsa platform partners receive separate sandbox and production keys. Send as `Authorization: Bearer ${YOUR_API_TOKEN}`.'