Workstream Team Members API

Team Members represent team members that are managed within your company.

OpenAPI Specification

workstream-team-members-api-openapi.yml Raw ↑
openapi: 3.0.2
info:
  version: 1.0.0
  title: Workstream Public Applicants Team Members API
  termsOfService: https://workstream.us/terms/
  contact:
    email: help@workstream.is
    url: https://help.workstream.us/en/
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  x-logo:
    url: workstream-logo.svg
    href: '#'
  description: '# API Reference


    The Workstream API is a modern, [RESTful](https://en.wikipedia.org/wiki/Representational_state_transfer) API. Our API has predictable resource-oriented URLs, supports HTTPS authentication, verbs and response codes, and returns JSON-encoded responses.


    **Note:** [Old APIs](https://old-api-doc.workstream.us/) will be deprecated, please refer to this API documentation for new API usages.

    '
servers:
- url: https://{tenant}
  variables:
    tenant:
      default: public-api.workstream.us
      description: Public API URI
tags:
- name: Team Members
  description: Team Members represent team members that are managed within your company.
paths:
  /team_members/{uuid}:
    get:
      operationId: GetTeamMember
      tags:
      - Team Members
      summary: Retrieve an existing Team Member
      description: Retrieves an existing Team Member.
      security:
      - bearerAuth: []
      parameters:
      - name: uuid
        in: path
        required: true
        schema:
          type: string
          format: uuid
      - name: embed
        in: query
        schema:
          type: string
          example: (location, job_title, department, information, state_tax, federal_tax, eligibility, direct_deposits)
        description: Specifies the names of resources that should be embedded in the response. Resources to embed must have parentheses and be comma-separated.
      responses:
        '200':
          description: OK
          headers:
            X-Request-ID:
              schema:
                type: string
              description: A randomly generated request-id to uniquely identify each request sent.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/team_member'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '422':
          $ref: '#/components/responses/422'
        '429':
          $ref: '#/components/responses/429'
  /team_members/{uuid}/status:
    put:
      operationId: UpdateTeamMemberStatus
      tags:
      - Team Members
      summary: Update an existing Team Member's status
      description: Updates an existing Team Member's status.
      security:
      - bearerAuth: []
      parameters:
      - name: uuid
        in: path
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                status:
                  type: string
                  enum:
                  - hired
                  - active
                  - offboarded
                last_day_of_work:
                  type: string
                  description: The last day of work. **Required** when updating a team member's status to `offboarded`.
                  format: date
                note:
                  type: string
                  description: The offboard note. **Optional** when updating a team member's status to `offboarded`.
                rehireable:
                  type: boolean
                  description: Whether the team member can be rehired. **Optional** when setting a team member's status to `offboarded`.
      responses:
        '200':
          description: OK
          headers:
            X-Request-ID:
              schema:
                type: string
              description: A randomly generated request-id to uniquely identify each request sent.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/base'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '422':
          $ref: '#/components/responses/422'
        '429':
          $ref: '#/components/responses/429'
  /team_members:
    get:
      operationId: GetTeamMembers
      summary: List existing Team Members
      description: Lists existing Team Members with the input parameters.
      tags:
      - Team Members
      security:
      - bearerAuth: []
      parameters:
      - name: first_name
        in: query
        schema:
          type: string
          example: Andy
        description: Returns team members with the input `first_name`.
      - name: last_name
        in: query
        schema:
          type: string
          example: Lee
        description: Returns team members with the input `last_name`.
      - name: status
        in: query
        schema:
          type: string
          enum:
          - hired
          - active
          - offboarded
        description: Returns team members with the input status.
      - name: location[uuid]
        in: query
        schema:
          type: string
          format: uuid
          example: c59c9852-2584-11ee-be56-0242ac120002
        description: Returns team members with the input location's UUID.
      - name: job_title[title]
        in: query
        schema:
          type: string
          example: Bus Driver
        description: Returns team members with the input job_title's title.
      - name: start_date.gte
        in: query
        schema:
          type: string
          format: date
          example: '2022-09-30'
        description: Returns team members with `start_date` after or equals to the input date.
      - name: start_date.lte
        in: query
        schema:
          type: string
          format: date
          example: '2022-09-30'
        description: Returns team members with `start_date` before or equals to the input date.
      - name: embed
        in: query
        schema:
          type: string
          example: (location, job_title, department, information, state_tax, federal_tax, eligibility, direct_deposits)
        description: Specifies the names of resources that should be embedded in the response. Resources to embed must have parentheses and be comma-separated.
      responses:
        '200':
          description: OK
          headers:
            X-Request-ID:
              schema:
                type: string
              description: A randomly generated request_id to uniquely identify each request sent.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/team_member'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '422':
          $ref: '#/components/responses/422'
        '429':
          $ref: '#/components/responses/429'
    post:
      operationId: CreateTeamMember
      summary: Create a new Team Member resource
      description: Creates a new Team Member resource.
      tags:
      - Team Members
      security:
      - bearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                team_member:
                  $ref: '#/components/schemas/creation-2'
      responses:
        '201':
          description: Returns the newly created Team Member.
          headers:
            X-Request-ID:
              schema:
                type: string
              description: A randomly generated request_id to uniquely identify each request sent.
          content:
            application/json:
              schema:
                type: object
                properties:
                  uuid:
                    type: string
                    format: uuid
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '422':
          $ref: '#/components/responses/422'
        '429':
          $ref: '#/components/responses/429'
components:
  schemas:
    state_tax-2:
      type: object
      title: State Tax
      description: Need to embed **state_tax** in request query params.
      properties:
        allowances_exemptions:
          description: allowed exemptions amount
          type: integer
        extra_withholding:
          description: extra withholding amount
          type: integer
        filing_status:
          description: filing status
          type: string
        tax_form:
          description: tax form name
          type: string
    custom_field:
      type: array
      title: custom field
      description: Need to embed **custom_fields** in request query params.
      items:
        type: object
        properties:
          uuid:
            description: Custom field uuid
            type: string
            example: 509a251a-93af-41e3-8416-23b29dc293cc
          title:
            description: Custom field title
            type: string
            example: custom field title
          value:
            description: Custom field value
            type: string
            example: custom field value
    federal_tax-2:
      type: object
      title: Federal Tax
      description: Need to embed **federal_tax** in request query params.
      properties:
        deductions:
          description: tax deductions amount
          type: integer
        extra_withholding:
          description: extra withholding amount
          type: integer
        filing_status:
          description: filing status
          type: string
        other_income:
          description: other income amount
          type: integer
        qualifying_children_num:
          description: qualifying children amount
          type: integer
        qualifying_other_num:
          description: qualifying other amount
          type: integer
        two_jobs:
          description: whether the employee has two jobs or not
          type: boolean
    base:
      type: object
      title: Team Member
      properties:
        uuid:
          type: string
          format: uuid
        first_name:
          description: Team member's first name.
          type: string
          example: Ryan
        middle_initial:
          description: Team member's middle initial.
          type: string
          example: J
        last_name:
          description: Team member's last name.
          type: string
          example: Folk
        preferred_name:
          description: Team member's preferred name. Returned as `null` for team members who have not set one.
          type: string
          nullable: true
          example: Johnny
        termination_note:
          description: Team member's termination note.
          type: string
          format: nullable
        start_date:
          description: Team member's start date.
          type: string
          format: date
        status:
          description: Status of the team member.
          type: string
          enum:
          - hired
          - active
          - offboarded
    creation-2:
      required:
      - first_name
      - last_name
      - dob
      - phone
      - status
      - start_date
      - location
      - job_title
      - department
      - government_ids
      type: object
      title: Team Member Creation Payload
      properties:
        first_name:
          type: string
          description: Team member's first name.
          example: Ryan
        middle_initial:
          type: string
          description: Team member's middle initial.
          example: J
        last_name:
          type: string
          description: Team member's last name.
          example: Folk
        preferred_name:
          type: string
          description: Team member's preferred name (optional).
          example: Johnny
        dob:
          type: string
          description: Team member's date of birth.
          format: date
          example: '2020-04-01'
        phone:
          type: string
          description: Team member's phone number.
          example: '+17789882873'
        email:
          type: string
          description: Team member's email address.
          example: wadam@example.fr
        gender:
          type: string
          description: Team member's gender.
          enum:
          - female
          - male
          - non_binary
          example: male
        status:
          type: string
          description: Status of the team member.
          enum:
          - hired
          - active
          - offboarded
        start_date:
          type: string
          description: Team member's employment start date.
          format: date
          example: '2023-05-01'
        location:
          type: object
          description: Team member's work location.
          properties:
            uuid:
              type: string
              format: uuid
              description: Team member's work location ID.
        job_title:
          type: object
          description: Team member's job title.
          properties:
            uuid:
              type: string
              format: uuid
              description: Team member's job title ID.
        department:
          type: object
          description: Team member's department.
          properties:
            uuid:
              type: string
              format: uuid
              description: Team member's department ID.
        government_ids:
          type: array
          description: Array of team member's government IDs. Only Social Security Number is accepted at the moment.
          items:
            type: object
            description: government ID
            properties:
              type:
                type: string
                enum:
                - SSN
              value:
                type: string
                example: '222521248'
        metadata:
          type: object
          description: Customer-defined key-value pairs. Use this parameter to store additional information on your candidate.
    location-3:
      type: object
      title: Location
      description: Need to embed **location** in request query params
      properties:
        uuid:
          type: string
          format: uuid
          example: c59c9852-2584-11ee-be56-0242ac120002
        name:
          type: string
          example: SF store
    state_tax:
      type: object
      title: employee's state tax info
      description: Need to embed **state_tax** in request query params.
      properties:
        allowances_exemptions:
          description: allowed exemptions amount
          type: integer
        extra_withholding:
          description: extra withholding amount
          type: integer
        filing_status:
          description: filing status
          type: string
        tax_form:
          description: tax form name
          type: string
        state:
          description: tax form state
          type: string
        tax_form_details:
          description: tax form details
          type: object
    job_title:
      type: object
      title: Job Title
      description: Need to embed **job_title** in request query params
      properties:
        uuid:
          type: string
          format: uuid
          example: c59c9852-2584-11ee-be56-0242ac120002
        title:
          type: string
          example: Bus Driver
    information-2:
      type: object
      title: Information
      description: Need to embed **information** in request query params.
      properties:
        phone:
          description: Team member's phone number.
          type: string
          example: '+17789882873'
        email:
          description: Team member's email address.
          type: string
          example: wadam@example.fr
        dob:
          description: Team member's date of birth.
          type: string
          format: date
          example: '2020-04-01'
        ethnicity:
          description: Team member's ethnicity.
          type: string
          enum:
          - white
          - black_or_african_american
          - hispanic_or_latino
          - american_indian_or_alaskan_native
          - asian
          - native_hawaiian_or_other_pacific_islander
          - two_or_more_races
          - not_specified
          example: black_or_african_american
        gender:
          description: Team member's gender.
          type: string
          enum:
          - female
          - male
          - non_binary
          example: male
        ssn:
          description: Team member's social security number.
          type: string
          example: '222521248'
        marital_status:
          description: Team member's marital status.
          type: string
          enum:
          - never_married
          - married
          - separated
          - divorced
          - widowed
          example: never_married
    department-3:
      type: object
      title: Department
      description: Need to embed **department** in request query params
      properties:
        uuid:
          type: string
          format: uuid
          example: c59c9852-2584-11ee-be56-0242ac120002
        name:
          type: string
          example: Marketing
    direct_deposit:
      type: object
      title: employee's direct_deposit
      properties:
        account_number:
          description: bank account number
          type: string
          example: '112223344'
        account_type:
          description: bank account type
          type: string
          example: saving
        percentage:
          description: percentage of compensation credited into this account
          type: integer
        routing_number:
          description: bank rounting number
          type: string
          example: '00356'
        status:
          description: bank account status
          type: string
          enum:
          - active
          - inactive
    team_member:
      allOf:
      - $ref: '#/components/schemas/base'
      - type: object
        properties:
          job_title:
            $ref: '#/components/schemas/job_title'
          location:
            $ref: '#/components/schemas/location-3'
          department:
            $ref: '#/components/schemas/department-3'
          information:
            $ref: '#/components/schemas/information-2'
          direct_deposits:
            type: array
            description: Need to embed **direct_deposits** in request query params.
            items:
              $ref: '#/components/schemas/direct_deposit'
          state_tax:
            $ref: '#/components/schemas/state_tax'
          federal_tax:
            $ref: '#/components/schemas/federal_tax-2'
          eligibility:
            $ref: '#/components/schemas/state_tax-2'
          custom_fields:
            $ref: '#/components/schemas/custom_field'
  responses:
    '422':
      description: Unprocessable Entity - Invalid query params or request body.
      content:
        application/problem+json:
          schema:
            type: object
            properties:
              error_code:
                type: integer
                example: 13422
              message:
                type: string
                example: (forbidden_embedded_resources}) is not a supported 'embed'. Valid 'embed' keys are (permitted_embedded_resources).
    '403':
      description: Forbidden - The user is not authorized to use this resource.
      content:
        application/problem+json:
          schema:
            type: object
            properties:
              error_code:
                type: integer
                example: 13403
              message:
                type: string
                example: Forbidden - The user is not authorized to use this resource.
    '401':
      description: Unauthorized - Credentials are not valid for the target resource.
      content:
        application/problem+json:
          schema:
            type: object
            properties:
              error_code:
                type: integer
                example: 13401
              message:
                type: string
                example: Unauthorized
    '404':
      description: Not found - The requested resource is not found.
      content:
        application/problem+json:
          schema:
            type: object
            properties:
              error_code:
                type: integer
                example: 13404
              message:
                type: string
                example: The requested resource is not found.
    '429':
      description: Too many requests.
      content:
        application/problem+json:
          schema:
            type: object
            properties:
              error_code:
                type: integer
                example: 13429
              message:
                type: string
                example: Throttle limit reached. Limit to 100 requests in 60 seconds.
  securitySchemes:
    oauth2:
      type: oauth2
      flows:
        implicit:
          authorizationUrl: https://public-api.workstream.us/
          scopes:
            Applicants: Read Applicant records
            Employees: Read Employee records
            Company Users: Read Company User records
            Company Roles: Read Company Role records
            Positions: Read Position records
            TeamMember: Read Team Member records
            Locations: Read Location records
            Departments: Read Department records
            Imported Employee Infos: Read Imported Employee Info records
            Custom Field: Read, update custom field and custom field values
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT