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}`.'