openapi: 3.0.3 info: title: SpotOn Reserve Availability Employees API description: The SpotOn Reserve API (powered by SeatNinja) lets partners integrate reservation, waitlist, and guest-management workflows into the SpotOn Reserve product. It supports listing accessible restaurants, checking available reservation times, creating and managing reservations, retrieving wait times, and adding guests to a waitlist. Authentication uses an API key supplied via the x-api-key request header, scoped to specific restaurants. The sandbox environment enforces daily and hourly request quotas; production has no documented rate limit. version: v2 contact: name: SpotOn Reserve Developer Center url: https://developers.spoton.com/reserve/docs/getting-started x-generated-from: documentation x-last-validated: '2026-06-03' servers: - url: https://api.seatninja.com description: Production - url: https://sandbox.seatninja.com description: Sandbox security: - apiKeyAuth: [] tags: - name: Employees description: Employee records and their job positions for a location. paths: /locations/{locationId}/employees: get: operationId: listEmployees summary: SpotOn List Employees description: Retrieve all employees for a location, including the job positions each holds. tags: - Employees parameters: - $ref: '#/components/parameters/LocationId' responses: '200': description: A list of employees for the location. content: application/json: schema: type: array items: $ref: '#/components/schemas/Employee' examples: ListEmployees200Example: summary: Default listEmployees 200 response x-microcks-default: true value: - id: abc123 locationID: abc123 firstName: Mark lastName: Nalepka email: jsmith@example.com nickName: Smoke's Burgers address: street1: example street2: example city: example state: example zip: example phone: example birthDate: '2025-03-15T14:30:00Z' hireDate: '2025-03-15T14:30:00Z' terminationDate: '2025-03-15T14:30:00Z' loginCode: A1B2 payrollId: abc123 active: false posUserId: abc123 deleted: false excludeFromReporting: false jobPositions: - {} '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '500': $ref: '#/components/responses/ServerError' x-microcks-operation: delay: 0 dispatcher: FALLBACK /locations/{locationId}/employees/{employeeId}: get: operationId: getEmployee summary: SpotOn Get Employee description: Retrieve a single employee by its unique identifier for a location. tags: - Employees parameters: - $ref: '#/components/parameters/LocationId' - name: employeeId in: path required: true description: The unique identifier for the employee. schema: type: string responses: '200': description: The requested employee. content: application/json: schema: $ref: '#/components/schemas/Employee' examples: GetEmployee200Example: summary: Default getEmployee 200 response x-microcks-default: true value: id: abc123 locationID: abc123 firstName: Mark lastName: Nalepka email: jsmith@example.com nickName: Smoke's Burgers address: street1: 1242 Selma street2: 1242 Selma city: Westland state: MI zip: '48185' phone: '1112223333' birthDate: '2025-03-15T14:30:00Z' hireDate: '2025-03-15T14:30:00Z' terminationDate: '2025-03-15T14:30:00Z' loginCode: A1B2 payrollId: abc123 active: false posUserId: abc123 deleted: false excludeFromReporting: false jobPositions: - id: example locationId: example name: example deleted: example '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/ServerError' x-microcks-operation: delay: 0 dispatcher: FALLBACK components: responses: Forbidden: description: The API key does not have access to the requested location. content: application/json: schema: $ref: '#/components/schemas/Error' Unauthorized: description: The API key is missing or invalid. content: application/json: schema: $ref: '#/components/schemas/Error' NotFound: description: The requested resource does not exist. content: application/json: schema: $ref: '#/components/schemas/Error' ServerError: description: An unexpected server error occurred. content: application/json: schema: $ref: '#/components/schemas/Error' schemas: Address: type: object description: A mailing address for an employee. properties: street1: type: string description: First line of the street address. example: 1242 Selma street2: type: string description: Second line of the street address. example: 1242 Selma city: type: string description: City. example: Westland state: type: string description: State or province. example: MI zip: type: string description: Postal code. example: '48185' phone: type: string description: Phone number. example: '1112223333' Error: type: object description: A standard error response. properties: message: type: string description: A human-readable description of the error. example: example code: type: string description: A machine-readable error code. example: A1B2 JobPosition: type: object description: A job position configured at a location. properties: id: type: string description: Unique job position identifier. example: abc123 locationId: type: string description: Associated location identifier. example: abc123 name: type: string description: Job position title. example: Smoke's Burgers deleted: type: boolean description: Whether the job position is marked as deleted. example: false Employee: type: object description: An employee record at a location. properties: id: type: string description: Unique employee identifier. example: abc123 locationID: type: string description: Associated location identifier. example: abc123 firstName: type: string description: Employee first name. example: Mark lastName: type: string description: Employee last name. example: Nalepka email: type: string format: email description: Employee email address. example: jsmith@example.com nickName: type: string description: Employee nickname. example: Smoke's Burgers address: $ref: '#/components/schemas/Address' birthDate: type: string format: date-time description: Employee birth date in RFC 3339 format. May be null. nullable: true example: '2025-03-15T14:30:00Z' hireDate: type: string format: date-time description: Employee hire date in RFC 3339 format. May be null. nullable: true example: '2025-03-15T14:30:00Z' terminationDate: type: string format: date-time description: Employee termination date in RFC 3339 format. May be null. nullable: true example: '2025-03-15T14:30:00Z' loginCode: type: string description: POS login code for the employee. example: A1B2 payrollId: type: string description: Optional payroll identifier. example: abc123 active: type: boolean description: Whether the employee is active at the location. example: false posUserId: type: string description: Location-specific POS user identifier. example: abc123 deleted: type: boolean description: Whether the employee record is marked as deleted. example: false excludeFromReporting: type: boolean description: Whether the employee is excluded from reporting. example: false jobPositions: type: array description: The job positions the employee holds. items: $ref: '#/components/schemas/JobPosition' parameters: LocationId: name: locationId in: path required: true description: The unique identifier for the location. schema: type: string securitySchemes: apiKeyAuth: type: apiKey in: header name: x-api-key description: API key scoped to specific restaurants.