openapi: 3.0.1
info:
  title: Magnit Supplier Public API
  description: Automate the retrieval of Staffing Requests and candidate status along with submission/withdrawal of candidates. To facilitate the submittal process, we have included access to reference data necessary for accurate and compliant candidate submissions, including client-specific questions, custom fields, and dropdown lists.  Using the Client ID from either the GET Clients or GET Staffing Requests endpoints, call the GET Custom Fields to obtain worker custom fields that are required when submitting candidates.  If any of those worker custom fields have a dropdown input method, call the GET Reference Lists endpoint for valid dropown values. Next, use the Op Unit ID and Client Country from the GET Staffing Requests response to call the GET Configurations endpoint. This endpoint will let you know what additional native fields must be populated in the candidate submittal. 
  version: v0
servers:
#  - url: https://cfuatweb03.prounlimited.com/wand2/publicapi/v1/
#    description: US Lower Environment
#  - url: https://euweb03.prounlimited.com/wand2/publicapi/v1
#    description: EU Lower Environment
  - url: https://api.magnitglobal.com/us/v1
    description: US Production
  - url: https://api.magnitglobal.com/eu/v1
    description: EU Production   
paths:

  /get-api-token:
    post:
      tags:
        - Token API
      summary: Request a token for authentication
      operationId: post
      parameters:
        - name: x-api-key
          in: header
          required: true
          schema:
            type: string
            description: "AWS Key"     
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AuthenticateRequestDto'
        required: true
      responses:
        200:
          description: Ok
          content:
            application/json:
              schema: 
                $ref: '#/components/schemas/AuthenticateResponse'
                

  /clients:
    get:
      tags:
        - Configuration
      summary: Returns Magnit VMS Clients with which the supplier has an agreement. 
      operationId: getClientsWithOpUnits
      security:
        - bearerAuth: []
      parameters:
        - name: x-api-key
          in: header
          required: true
          schema:
            type: string
            description: "AWS Key"        
      responses:
        200:
          description: Ok
          content:
            application/json:
              schema:
                type: object
                properties:
                  self:
                    type: string
                    example: "/wand2/publicapi/v1/clients"
                  kind:
                    type: string
                    example: "ClientsCollection"
                  totalRecords:
                    type: integer
                    example: 111
                  clients:
                    type: array
                    items:
                      $ref: '#/components/schemas/Clients'
        401:
          description: "401"
          content:
            application/json:
              schema: 
                type: object
                properties:
                  error:
                    example: "invalid_token"
                    type: string
                  error_description:
                    example: "Access token expired"
                    type: string  
        403:
          description: "403"
          content:
            application/json:
              schema: 
                type: object
                properties:
                  type:
                    example: "COMMON_FORBIDDEN"
                    type: string
                  status:
                    example: 403
                    type: integer 
                  title:
                    example: "Access to this resource is forbidden."
                    type: string
                  timestamp:
                    example: "2024-11-20T06:42:42:230Z"
                    type: string
       
  /customfields/{clientId}:
    get:
      tags:
        - Configuration
      summary: By Client ID, returns custom field details required when submitting a candidate.
      operationId: getCustomFields
      security:
        - bearerAuth: []
      parameters:
        - name: x-api-key
          in: header
          required: true
          schema:
            type: string
            description: "AWS Key"      
        - name: clientId
          in: path
          required: true
          schema:
            type: integer
            format: int64
        - name: objectType
          in: header
          required: true
          schema:
            type: string
            example: "Worker"
        - name: pageName
          in: header
          required: false
          schema:
            type: string
      responses:
        200:
          description: Ok
          content:
            application/json:
              schema:
                type: object
                properties:
                  self:
                    type: string
                    example: "/wand2/publicapi/v1/customfields/111"
                  kind:
                    type: string
                    example: "CustomFieldsCollection"
                  totalRecords:
                    type: integer
                    example: 6
                  customFields:
                    type: array
                    items:
                      $ref: '#/components/schemas/CustomFields'
        401:
          description: "401"
          content:
            application/json:
              schema: 
                type: object
                properties:
                  error:
                    example: "invalid_token"
                    type: string
                  error_description:
                    example: "Access token expired"
                    type: string  
        403:
          description: "403"
          content:
            application/json:
              schema: 
                type: object
                properties:
                  type:
                    example: "COMMON_FORBIDDEN"
                    type: string
                  status:
                    example: 403
                    type: integer 
                  title:
                    example: "Access to this resource is forbidden."
                    type: string
                  timestamp:
                    example: "2024-11-20T06:42:42:230Z"
                    type: string
    
  /referencelists/{cfReferenceListId}:
    get:
      tags:
        - Configuration
      summary: By Reference List ID, returns the values in a custom field dropdown list.
      operationId: getReferenceList
      security:
        - bearerAuth: []
      parameters:
        - name: x-api-key
          in: header
          required: true
          schema:
            type: string
            description: "AWS Key"      
        - name: cfReferenceListId
          in: path
          required: true
          schema:
            type: integer
            format: int64
            example: 1111111111
      responses:
        200:
          description: Ok
          content:
            application/json:
              schema:
                type: object
                properties:
                  self:
                    type: string
                    example: "/wand2/publicapi/v1/referencelists/1111111111?offset=0&limit=100"
                  kind:
                    type: string
                    example: "ReferenceListsCollection"
                  totalRecords:
                    type: integer
                    example: 140
                  next:
                    type: string
                    example: "/wand2/publicapi/v1/referencelists/1111111111?offset=100&limit=100"
                  customFieldsReferenceValues:
                    type: array
                    items:
                      properties:
                        value:
                          type: string
                          example: "Value 1"
        401:
          description: "401"
          content:
            application/json:
              schema: 
                type: object
                properties:
                  error:
                    example: "invalid_token"
                    type: string
                  error_description:
                    example: "Access token expired"
                    type: string  
        403:
          description: "403"
          content:
            application/json:
              schema: 
                type: object
                properties:
                  type:
                    example: "COMMON_FORBIDDEN"
                    type: string
                  status:
                    example: 403
                    type: integer 
                  title:
                    example: "Access to this resource is forbidden."
                    type: string
                  timestamp:
                    example: "2024-11-20T06:42:42:230Z"
                    type: string
  
  /configurations/{opUnitId}/country/{countryIso3}:
    get:
      tags:
        - Configuration
      summary: By Op Unit ID and Country ISO 3, returns additional requirements when submitting a candidate. The opUnitId and clientLocationCountryCode in the GET Staffing Request should be used when calling the GET Configurations endpoint.
      operationId: getAllConfigurations
      security:
        - bearerAuth: []
      parameters:
        - name: x-api-key
          in: header
          required: true
          schema:
            type: string
            description: "AWS Key"      
        - name: opUnitId
          in: path
          required: true
          schema:
            type: integer
            format: int64
            example: 111
        - name: countryIso3
          in: path
          required: true
          schema:
            type: string
            example: "USA"
      responses:
        200:
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfigurationsResponse'
        401:
          description: "401"
          content:
            application/json:
              schema: 
                type: object
                properties:
                  error:
                    example: "invalid_token"
                    type: string
                  error_description:
                    example: "Access token expired"
                    type: string  
        403:
          description: "403"
          content:
            application/json:
              schema: 
                type: object
                properties:
                  type:
                    example: "COMMON_FORBIDDEN"
                    type: string
                  status:
                    example: 403
                    type: integer 
                  title:
                    example: "Access to this resource is forbidden."
                    type: string
                  timestamp:
                    example: "2024-11-20T06:42:42:230Z"
                    type: string
  
  /staffingrequests:
    get:
      tags:
        - Request
      summary: "Returns Staffing Request details for Requests released to the Supplier calling the API. There is a default filter that returns data for Requests with a Date Created within one year from system date. All date header parameters (FirstNotified, DateCancelled, and DateClosed) support the following operators: [bt] (Between); [eq] (Equal to); [gt] (Greater Than); [ge] (Greater Than or Equal To); [lt] (Less Than); and [le] (Less Than or Equal To). [bt] (Between) requires two dates separated by a comma."
      operationId: getAllStaffingRequests
      security:
        - bearerAuth: []
      parameters:
        - name: x-api-key
          in: header
          required: true
          schema:
            type: string
            description: "AWS Key"      
        - name: clientId
          in: header
          required: false
          schema:
            type: integer
            format: int64
            description: "111 or [111,222]"
            example: 111
        - name: requestStatus
          in: header
          required: false
          schema:
            type: string
            description: "requestStatus is required unless requestId header parameter is applied."            
            example: "Pending"
            enum:
             - Closed
             - Cancelled             
             - On Hold
             - Pending
        - name: requestId
          in: header
          required: false
          schema:
            type: integer
            format: int64
            example: 11111111        
        - name: FirstNotified
          in: header
          required: false
          schema:
            type: string
            format: Date
            pattern: '^\d{4}-\d{2}-\d{2}$'
            example: "2025-05-28"
        - name: DateCancelled
          in: header
          required: false
          schema:
            type: string
            format: Date
            pattern: '^\d{4}-\d{2}-\d{2}$'
            example: "2025-05-28"
        - name: DateClosed
          in: header
          required: false
          schema:
            type: string
            format: Date
            pattern: '^\d{4}-\d{2}-\d{2}$'
            example: "2025-05-28"
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                type: object
                properties:
                  self:
                    type: string
                    example: "/wand2/publicapi/v1/staffingrequests?offset=0&limit=100"
                  kind:
                    type: string
                    example: "StaffingRequestList"
                  totalRecords:
                    type: integer
                    example: 347
                  next:
                    type: string
                    example: "/wand2/publicapi/v1/staffingrequests?offset=100&limit=100"
                  staffingRequests:
                    type: array
                    items:
                      $ref: '#/components/schemas/StaffingRequestList'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '401':
          description: Invalid Credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
                
  /staffingrequests/candidatesubmissionstatus:
    get:
      tags:
        - Request
      summary: Returns the status of the supplier's candidates.  
      operationId: getCandidateSubmissionStatus
      security:
        - bearerAuth: []
      parameters:
        - name: x-api-key
          in: header
          required: true
          schema:
            type: string
            description: "AWS Key"      
        - name: requestStatus
          in: header
          description: "requestStatus is a required header parameter when either requestId or candidateSubmissionId is not. Multiple values are supported (e.g. [in]Pending,Closed)"
          schema:
            type: string
            example: "Closed"
            enum:
             - Pending
             - Closed
             - Cancelled
             - On Hold
        - name: requestId
          in: header
          required: false
          schema:
            type: integer
            format: int64
            example: 11111
          examples:
            single:
              summary: Single requestId
              value: 11111
            multiple:
              summary: Multiple requestIds
              value: "[in]11111,22222,33333"
        - name: candidateSubmissionId
          in: header
          required: false
          schema:
            type: integer
            format: int64
            example: 1111111111   
          examples:
            single:
              summary: Single candidateSubmissionId
              value: 11111
            multiple:
              summary: Multiple candidateSubmissionIds
              value: "[in]11111,22222,33333"
        - name: DateCancelled
          in: header
          required: false
          schema:
            type: string
            format: Date
            pattern: '^\d{4}-\d{2}-\d{2}$'
            example: "2025-05-28"
        - name: DateClosed
          in: header
          required: false
          schema:
            type: string
            format: Date
            pattern: '^\d{4}-\d{2}-\d{2}$'
            example: "2025-05-28"         
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                type: object
                properties:
                  self:
                    type: string
                    example: "/staffingrequests/candidatesubmissionstatus"
                  kind:
                    type: string
                    example: "CandidateSubmissionStatus"
                  candidateStatusDetails:
                    type: array
                    items:
                      $ref: '#/components/schemas/CandidateSubmissionStatus'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '401':
          description: Invalid Credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
  
  /staffingrequests/{requestId}/attachments/{attachmentId}:
    get:
      tags:
        - Request
      summary: By Request ID and Attachment ID (returned in the GET Staffing Request response), returns binary format file attachments. 
      operationId: getAttachment
      security:
        - bearerAuth: []
      parameters:
        - name: x-api-key
          in: header
          required: true
          schema:
            type: string
            description: "AWS Key"
        - name: Accept
          in: header
          required: true
          schema:
            type: string
            default: application/octet-stream            
        - name: requestId
          in: path
          required: true
          schema:
            type: integer
            format: int64
            example: 1111111
        - name: attachmentId
          in: path
          required: true
          schema:
            type: integer
            format: int64
            example: 11111111
      responses:
        '200':
          description: Success
          content:
            application/octet-stream: {}
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '401':
          description: Invalid Credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        
  /candidates:
    post:
      tags:
        - Candidates
      operationId: candidatePost
      summary: Creates or reuses a worker profile and submits it to a Request
      security:
        - bearerAuth: []
      parameters:
        - name: x-api-key
          in: header
          required: true
          schema:
            type: string
            description: "AWS Key"        
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CandidatePostRequest'
        required: true
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                type: object
                properties:
                  self:
                    type: string
                    example: "candidates/111"
                  kind:
                    type: string
                    example: "Candidate"
                  magnitWorkerId:
                    description: "Unique ID for a worker profile. Use the Worker ID in future submittals."
                    type: string
                    example: "1111111"
                  candidateSubmissionId:
                    description: "A unique ID is generated when a candidate is successfully submitted to a Request. Use this ID when withdrawing or updating a candidate submission to that Request."
                    type: string
                    example: "1111111111"
            
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '401':
          description: Invalid Credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
                
  /candidatesubmissions/{candidateSubmissionId}:
    patch:
      tags:
        - Candidates
      operationId: CandidateSubmissionUpdate
      summary: Modifies an existing candidate submittal on a Request 
      security:
        - bearerAuth: []
      parameters:
        - name: x-api-key
          in: header
          required: true
          schema:
            type: string
            description: "AWS Key"      
        - name: candidateSubmissionId
          in: path
          required: true
          schema:
            type: integer
            format: int64
            example: 1111111111
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CandidateSubmissionUpdate'
        required: true
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: "The request has been successfully processed."
            
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '401':
          description: Invalid Credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
  
  /candidatesubmissions/{candidateSubmissionId}/withdraw:
    patch:
      tags:
        - Candidates
      operationId: Candidatewithdraw
      summary: Updates candidate status to Withdrawn for a specific Request
      security:
        - bearerAuth: []
      parameters:
        - name: x-api-key
          in: header
          required: true
          schema:
            type: string
            description: "AWS Key"      
        - name: candidateSubmissionId
          in: path
          required: true
          schema:
            type: integer
            format: int64
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CandidateWithdraw'            
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: "The request has been successfully processed."
            
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '401':
          description: Invalid Credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
                
  /workers:
    get:
      tags:
        - Workers
      summary: Retrieves basic details of your worker population. The magnitWorkerId in the response corresponds to the magnitWorkerId in the Candidate Status endpoint.  
      operationId: workers
      security:
        - bearerAuth: []
      parameters:
        - name: x-api-key
          in: header
          required: true
          schema:
            type: string
            description: "AWS Key"      
        - name: magnitWorkerId
          in: header
          required: false
          schema:
            type: integer
            format: int64
            example: 1111111111  
        - name: firstName
          in: header
          required: false
          schema:
            type: string
            example: "" 
        - name: lastName
          in: header
          required: false
          schema:
            type: string
            example: "" 
        - name: emailAddress
          in: header
          required: false
          schema:
            type: string
            example: "" 
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                type: object
                properties:
                  self:
                    type: string
                    example: "/wand2/publicapi/v1/workers?offset=0&limit=100"
                  kind:
                    type: string
                    example: "WorkersList"
                  totalRecords:
                    type: integer
                    example: 33615
                  next:
                    type: string
                    example: "/wand2/publicapi/v1/workers?offset=100&limit=100"
                  WorkerList:
                    type: array
                    items:
                      $ref: '#/components/schemas/Worker'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '401':
          description: Invalid Credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
  
  /workers/{workerid}/resume/{resumeid}:
    get:
      tags:
        - Workers
      summary: Binary file of a worker's resume in the Magnit platform. 
      operationId: workerResume
      security:
        - bearerAuth: []
      parameters:
        - name: x-api-key
          in: header
          required: true
          schema:
            type: string
            description: "AWS Key"    
        - name: Accept
          in: header
          required: true
          schema:
            type: string
            default: application/octet-stream            
        - name: workerid
          in: path
          required: true
          schema:
            type: integer
            format: int64
            example: 1111111111  
        - name: resumeid
          in: path
          required: true
          schema:
            type: integer
            format: int64 
            example: 1111111111 
      responses:
        '200':
          description: Ok
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '401':
          description: Invalid Credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponse'
  
  
components:
  schemas:
  
    ExceptionResponse:
      type: object
      properties:
        type:
          type: string
        status:
          type: integer
          format: int32
        title:
          type: string
        errors:
          type: array
          items:
            type: string
        timestamp:
          type: string
          format: date-time
    AuthenticateRequestDto:
      type: object
      properties:
        credentialKey:
          type: integer
          format: int64
        clientKey:
          type: string
        clientSecret:
          type: string
    AuthenticateResponse:
      type: object
      properties:
        accessToken:
          type: string
        expiresIn:
          type: integer
          format: int64
    
    Worker:
      type: object
      properties:
        self:
          type: string
          example: "/workers/11049140"
        kind:
          type: string
          example: "Workers"
        magnitWorkerId:
          type: integer
          example: 11111
        firstName:
          type: string
          example: "Chris"
        lastName:
          type: string
          example: "Matthews"
        legalFirstName:
          type: string
          example: "Christopher"
        legalLastName:
          type: string
          example: "Matthews"
        emailAddress:
          type: string
          format: email
          example: "cmatthews@test.com"
        primaryPhone:
          type: string
          example: "(111) 111-1111"
        mobilePhone:
          type: string
          nullable: true
          example: null
        modifiedDate:
          type: string
          format: date-time
          example: "2025-08-25 04:38:13.757"
        createdDate:
          type: string
          format: date-time
          example: "2021-07-06 14:54:54"
        resumeAttachmentId:
          type: array
          items:
            type: integer
          example: [11111111]
        resumeEndpoint:
          type: array
          items:
            type: string
          example: ["/workers/1111/resume/111111"]
      
    Clients:
      type: object
      properties:
        clientId:
          type: integer
          example: 111
        clientName:
          type: string
          example: "Client Name"
        opUnits:
          type: array
          items:
            properties:
              id:
                type: integer
                example: 222
              name:
                type: string
                example: "Op Unit Name"
                
    CustomFields:
      type: object
      properties:
        id:
          type: integer 
          example: 111
        objectType:
          type: string 
          example: "Worker"
        displayName:
          type: string 
          example: "What is the worker's role as a board member?"
        helpText:
          type: string 
          example: "Choose which best describes the worker's role."
        inputType:
          type: string 
          example: "Reference List"
          enum:
            - "Reference List"
            - "Free Text"        
        required:
          type: boolean 
          example: false
        requireValidation:
          type: boolean 
          example: true
        validationType:
          type: string 
          example: "Date"
          enum:
            - "Date"
            - "Email"
            - "None"
            - "Numeric"
            - "Reference List"
            - "Text"
        validationFormat:
          type: string 
          example: "mm/dd/yyyy"
        cfRefListId:
          type: integer 
          example: 1111111111
        cfRefListName:
          description: A CF (custom field) Reference List is a set of values that can be entered for a custom field.
          type: string 
          example: "Board Member Roles"
        cfRefListEndpoint:
          description: "If the inputType is Reference List, call the cfRefListEndpoint to obtain the list of valid values to submit with your candidate."
          type: string 
          example: "/referencelists/1111111111"
        followOnQuestion:
          description: "If a custom field is a follow-on, that means it is applicable based on the response of a leading custom field."
          type: boolean 
          example: true
        followUpQuestionId:
          description: "The ID of the leading custom field. The response to that custom field will determine if the follow-on custom field is applicable."
          type: integer 
          example: 111111111
        followUpQuestionName:
          description: "The name of the leading custom field. The response to that custom field will determine if the follow-on custom field is applicable."
          type: string 
          example: "Does the worker have any Board Membership Affiliations?"
        followUpForResponse:
          description: "The value/s in the leading custom field that will prompt the follow-on custom field."
          type: string
          example: ["Yes", "Previously"]
    
    ConfigurationsResponse:
      type: object
      properties:
        self:
          type: string
          description: "Resource path"
        kind:
          type: string
        configurations:
          type: object
          properties:
            profile:
              type: object
              properties:
                birthMonth:
                  type: object
                  properties:
                    question:
                      type: string
                    required:
                      type: boolean
                birthDay:
                  type: object
                  properties:
                    question:
                      type: string
                    required:
                      type: boolean
                last4NationalId:
                  type: object
                  properties:
                    question:
                      type: string
                    required:
                      type: boolean
            resumePortfolio:
              type: object
              properties:
                subContractedWorker:
                  type: object
                  properties:
                    question:
                      type: string
                    required:
                      type: boolean
                    validValues:
                      type: array
                      items:
                        type: string
                    followOnValue:
                      type: string
                    followOnFields:
                      type: array
                      items:
                        type: string
                h1b:
                  type: object
                  properties:
                    question:
                      type: string
                    required:
                      type: boolean
                    validValues:
                      type: array
                      items:
                        type: string
            previousExperience:
              type: object
              properties:
                workerPreviousContractor:
                  type: object
                  properties:
                    question:
                      type: string
                    required:
                      type: boolean
                    validValues:
                      type: array
                      items:
                        type: string
                    followOnValue:
                      type: string
                    followOnFields:
                      type: array
                      items:
                        type: string
                workerPreviousEmployee:
                  type: object
                  properties:
                    question:
                      type: string
                    required:
                      type: boolean
                    validValues:
                      type: array
                      items:
                        type: string
                    followOnValue:
                      type: string
                    followOnFields:
                      type: array
                      items:
                        type: string
                workerFamilyMemberAtClient:
                  type: object
                  properties:
                    question:
                      type: string
                    required:
                      type: boolean
                    validValues:
                      type: array
                      items:
                        type: string
                    followOnValue:
                      type: string
                    followOnFields:
                      type: array
                      items:
                        type: string
                    relationship:
                      type: object
                      properties:
                        validValues:
                          type: array
                          items:
                            type: string
            eeo:
              type: object
              properties:
                ageResponse:
                  type: object
                  properties:
                    required:
                      type: boolean
                    validValues:
                      type: array
                      items:
                        type: string
                disabilityResponse:
                  type: object
                  properties:
                    required:
                      type: boolean
                    validValues:
                      type: array
                      items:
                        type: string
                ethnicityResponse:
                  type: object
                  properties:
                    required:
                      type: boolean
                    validValues:
                      type: array
                      items:
                        type: string
                genderResponse:
                  type: object
                  properties:
                    required:
                      type: boolean
                    validValues:
                      type: array
                      items:
                        type: string
                veteranResponse:
                  type: object
                  properties:
                    required:
                      type: boolean
                    validValues:
                      type: array
                      items:
                        type: string
      example:
        self: "configurations/173/country/USA"
        kind: "configurations"
        configurations:
          profile:
            birthMonth:
              question: "What is the worker's birth month?"
              required: true
            birthDay:
              question: "What is the worker's birth day?"
              required: true
            last4NationalId:
              question: "What are the last four digits of the worker's national ID?"
              required: true
          resumePortfolio:
            subContractedWorker:
              question: "Sub-contracted worker"
              required: false
              validValues:
                - "true"
                - "false"
              followOnValue: "true"
              followOnFields:
                - "subContractorCompanyName"
                - "subContractorPayRate"
            h1b:
              question: "h1B"
              required: true
              validValues:
                - "true"
                - "false"
          previousExperience:
            workerPreviousContractor:
              question: "Worker is a previous contractor or provided services through a third-party supplier"
              required: true
              validValues:
                - "true"
                - "false"
              followOnValue: "true"
              followOnFields:
                - "contStartYear"
                - "contEndMonth"
                - "contEndYear"
            workerPreviousEmployee:
              question: "Worker is a previous employee"
              required: true
              validValues:
                - "true"
                - "false"
              followOnValue: "true"
              followOnFields:
                - "empStartMonth"
                - "empStartYear"
                - "empEndMonth"
                - "empEndYear"
                - "empSupervisor"
            workerFamilyMemberAtClient:
              question: "Worker has a family member at client"
              required: false
              validValues:
                - "true"
                - "false"
              followOnValue: "true"
              followOnFields:
                - "familyMemberName"
                - "relationship"
              relationship:
                validValues:
                  - "Spouse/Partner"
                  - "Parent"
                  - "Child"
                  - "Sibling"
                  - "Grandparent"
                  - "In-Law"
                  - "Aunt/Uncle"
                  - "Other"
          eeo:
            ageResponse:
              required: false
              validValues: []
            disabilityResponse:
              required: false
              validValues:
                - "Yes, I have a disability (or previously had a disability)"
                - "I don't have a disability"
                - "I do not wish to disclose"
            ethnicityResponse:
              required: true
              validValues:
                - "American Indian or Alaskan Native"
                - "Asian"
                - "Black or African American"
                - "Hispanic or Latino"
                - "I Choose Not To Disclose This Information"
                - "Native Hawaiian or other Pacific Islander"
                - "Two or more races"
                - "White or Caucasian"
            genderResponse:
              required: true
              validValues:
                - "Male"
                - "Female"
                - "Transgender"
                - "Non-Binary"
                - "I do not wish to disclose"
            veteranResponse:
              required: false
              validValues:
                - "Veteran"
                - "Not a Veteran"
                - "I do not wish to disclose"

    
    StaffingRequestList:
      type: object
      properties:
        self:
          type: string
          example: "/staffingrequests"
        kind:
          type: string
          example: "StaffingRequest"
        clientId:
          type: integer
          example: 111
        clientName:
          type: string
          example: "Test Client"
        opUnitId:
          description: "Use when calling the GET Configurations endpoint."  
          type: integer
          example: 11111
        opUnitName:
          type: string
          example: "Test Industrial"
        supplier:
          type: string
          example: "Magnit Global"
        requestId:
          type: integer
          example: 1111111
        requestStatus:
          type: string
          example: "Pending"
          enum:
            - "Cancelled"
            - "Closed"
            - "On Hold"
            - "Pending"
        requestStatusReason:
          description: "A Request can have multiple status reasons at the same time. The API will return them in a single string."
          type: string
          example: "Pending Sourcing"
          enum:
            - "Failed Request Approval"
            - "Failed Work Order e-Sign"
            - "Hiring Manager is Currently Conducting Interviews"
            - "Hiring Manager is Currently Reviewing Resumes"
            - "Hiring Manager is Currently Unavailable"
            - "Pending Request Approval"
            - "Pending Sourcing"
            - "Pending Work Order e-Sign"
            - "Worker Replacement"
        requestType:
          type: string
          example: "Staffing"
        reason:
          description: "Values are configurable by client."
          type: string
          example: "New Headcount"
        reasonDetail:
          description: "If client settings restrict supplier visibility of this field, it will be empty in the response."
          type: string
          example: "Long term assignment for special project."
        jobCategory:
          description: "Values are configurable by client."
          type: string
          example: "Light Industrial"
        jobCode:
          description: "Values are configurable by client."
          type: string
          example: "Material Handler"
        jobTitle:
          description: "Values are configurable by client."
          type: string
          example: "Material Handler"
        jobDuties:
          type: string
          example: "Uses a variety of equipment such as forklifts, conveyers, cranes, handcarts, and power trucks..."
        jobSkills:
          type: string
          example: "Applies acquired knowledge and skills to complete standard tasks..."
        jobEducation:
          type: string
          example: "1-3 years related work experience preferred and/or training required"
        jobDescription:
          type: string        
        requiredSkills:
          type: array
          items:
            type: string
          example:
            - "SAMPLING"
            - "QUALITY ASSURANCE"
            - "ADJUSTMENTS"
            - "CORRECTIVE ACTION"
            - "TECHNICAL ASSISTANCE"
        additionalSkills:
          type: array
          items:
            type: string
          example:
            - "PREPARING MEMORANDA"
            - "PREPARING MEETING MINUTES"
            - "PREPARING REPORTS"
            - "SCHEDULING"
            - "MAINTAINING CALENDAR OF APPOINTMENTS"
            - "COORDINATING TRAVEL ITINERARIES"
            - "OPERATING A PERSONAL COMPUTER"
            - "USING SOFTWARE PACKAGES"
            - "RECEPTIONIST DUTIES"
            - "HANDLING CALLS"
        language:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                example: "en"
              canSpeak:
                type: boolean
                example: true
              canWrite:
                type: boolean
                example: true
              canRead:
                type: boolean
                example: true
        minimumDegreeRequired:
          type: string
          nullable: true
          example: "Bachelors"
        certificationsLicenses:
          type: string
          nullable: true
          example: "Master HVACR"
        publicationsPreferred:
          type: string
          example: "No"
        patentsPreferred:
          type: string
          example: "No"
        veteranPreferred:
          type: string
          example: "No"
        totalPositions:
          type: integer
          example: 7
        remainingPositions:
          type: integer
          example: 5
        resumeSubmittalLimit:
          type: integer
          example: 21
        resumeSubmittalsRemaining:
          type: integer
          example: 17        
        startDate:
          type: string
          format: date
          example: "2025-01-01"
        endDate:
          type: string
          format: date
          example: "2025-12-31"
        hoursPerDay:
          type: number
          format: float
          example: 8.0
        hoursPerWeek:
          type: number
          format: float
          example: 40.0
        daysPerWeek:
          type: integer
          example: 5
        scheduleNotes:
          type: string
          example: "Overnights on Mon,Wed,Fri"
        clientLocationAddress1:
          type: string
          example: "217 E Paisano Dr"
        clientLocationAddress2:
          type: string
          example: "Suite 2"
        clientLocationCity:
          type: string
          example: "El Paso"
        clientLocationStateCode:
          type: string
          example: "TX"
        clientLocationPostalCode:
          type: string
          example: "79936-6801"
        clientLocationCountryCode:
          description: "Use the ISO3 in the GET Configurations endpoint to return country-specific Equal Employment Opportunity (EEO) candidate submittal requirements."
          type: string
          example: "USA"
        workLocationAddress1:
          type: string
          example: "944 US-202"
        workLocationAddress2:
          type: string
          example: ""
        workLocationCity:
          type: string
          example: "Branchburg"
        workLocationStateCode:
          type: string
          example: "NJ"
        workLocationPostalCode:
          type: string
          example: "08876"
        workLocationCountryCode:
          type: string
          example: "USA"
        workCompletedOffsite:
          type: boolean
          example: false
        departmentCode:
          type: string
          example: "2141001701"
        departmentName:
          type: string
          example: "2141001701 Mfg - Labor"
        billRate:
          description: "If client settings restrict supplier visibility of this field, it will be empty in the response."
          type: number
          format: float
          example: 100.0
        rateFrequency:
          type: string
          example: "Per Hour"
          enum:
            - "Bi Weekly"
            - "Monthly"
            - "Per Day"
            - "Per Hour"
            - "Per Unit"
            - "Variable Prorated"
            - "Weekly"
        multiRate:
          type: array
          items:
            type: object
            properties:
              billRate:
                type: number
                format: float
                example: 52.97
              type:
                description: "Multi-Rate is a type of Per Hour frequency, often but not always seen in healthcare. The base Bill Rate will always be hourly but its multi-rate can sometimes be daily. Values vary by client. A Staffing Request can have either a Multi-Rate or Per Unit Rate Frequency, not both."
                type: string
                example: "On Call"
              id:
                type: integer
                example: 11111
              frequency:
                type: string
                example: "Hourly"
        perUnit:
          type: array
          items:
            type: object
            properties:
              type:
                description: "Per Unit represents the rate per single service completed. Values vary by client. A Staffing Request can have either a Multi-Rate or Per Unit Rate Frequency, not both."
                type: string
                example: "Stress Test"
              id:
                type: integer
                example: 11111
        currency:
          type: string
          example: "USD"
        mspFirstName:
          type: string
          example: "mspFirstName"
        mspLastName:
          type: string
          example: "mspLastName"
        hiringManagerFirstName:
          description: "If client settings restrict supplier visibility of this field, it will be empty in the response."        
          type: string
          example: "hiringManagerFirstName"
        hiringManagerLastName:
          description: "If client settings restrict supplier visibility of this field, it will be empty in the response."        
          type: string
          example: "hiringManagerLastName"
        additionalContact:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
                example: "Contact Name"
              email:
                type: string
                example: "Contact.Name@TestCompany.com"
        attachment:
          type: array
          items:
            type: object
            properties:
              id:
                type: integer
                example: 111111111
              name:
                type: string
                example: "Operations Program Specialist.docx"
              dateSaved:
                type: string
                format: date-time
                example: "2025-05-28 22:49:36.854"
              endpoint:
                type: string
                example: "/staffingrequests/1111111/attachments/111111111"

        reqCustomField:
          type: array
          items:
            type: object
            properties:
              label:
                type: string
                example: "Temp or Temp to Hire"
              value:
                type: string
                example: "Temp to Hire"
        firstNotified:
          type: string
          format: date-time
          example: "2025-05-28 22:49:53.096"
        dateCreated:
          type: string
          format: date-time
          example: "2025-05-28 22:49:36.854"
        datePending:
          type: string
          format: date-time
          example: "2025-05-28 22:49:41.782"
        dateReopened:
          type: string
          format: date-time
          nullable: true
          example: "2025-05-28 22:49:41.782"
        dateClosed:
          type: string
          format: date-time
          nullable: true
          example: "2025-05-28 22:49:41.782"
        dateCancelled:
          type: string
          format: date-time
          nullable: true
          example: "2025-05-28 22:49:41.782"
        optedOut:
          description: "If optedOut = true, this indicates that the supplier has decided not to participate in the Staffing Request and candidates cannot be submitted."
          type: boolean
          example: false
    
    CandidateSubmissionStatus:
      type: object
      properties:
        requestId:
          type: integer
          example: 111111111
        requestStatus:
          type: string
          example: "Closed"
          enum:
            - "Cancelled"
            - "Closed"
            - "OnHold"
            - "Pending"        
        magnitWorkerId:
          type: integer
          example: 111111111        
        candidateSubmissionId:
          type: integer
          example: 111111111
        candidateSubmissionStatus:
          type: string
          example: "Rejected"
          enum:
            - "Assigned"
            - "Non-Compliant"
            - "Not Assigned"
            - "Not Assigned: Pre-MSP Pass"
            - "Pending"
            - "Rejected"
            - "Rejected: Pre-MSP Pass"
            - "Withdrawn"
            - "Withdrawn: Post-Assignment"
            - "Withdrawn: Post-Interview"
            - "Withdrawn: Pre-Interview"
            - "Withdrawn: Pre-MSP Pass"
        reason:
          type: string
          example: "Other candidates were better suited"
        reasonDetail:
          type: string
          example: "Candidate only has two years of experience and I am looking for five."
        engagementId:
          type: integer
          example: 111111111
    
    CandidatePostRequest:
      type: object
      properties:
        profile:
          type: object
          required:
          - firstName
          - lastName
          - phoneNumber
          - email
          - requestId
          properties:
            firstName:
              type: string
              example: "First"
            lastName:
              type: string
              example: "Last Name"
            city:
              type: string
              example: "San Fransisco"
            stateProvince:
              type: string
              example: "CA"
            countryCode:
              type: string
              example: "USA"
            postalCode:
              type: string
              example: "NE29 7RG"
            phoneNumber:
              type: string
              example: "(313) 123-4567"
            email:
              type: string
              example: "worker_name@mail.com"
            linkedinUrl:
              type: string
              example: "https://www.linkedin.com/in/sample-profile"
            portfolioUrl:
              type: string
              example: "www.candidate.com/myportfolio"
            externalWorkerId:
              type: string
              example: "ID912"
            requestId:
              type: integer
              example: 1111111
            magnitWorkerId:
              description: "Unique value for a worker profile in the VMS. When the worker is created through the API the successful response includes the Worker ID.  You must populate the Worker ID field in the POST candidate call and use the existing profile on subsequent submissions.  Payload data will replace what exists for the Worker ID in the VMS."  
              type: integer
              example: 1111111
            source:
              type: string
              example: ' '
            birthDay:
              description: "Required based on client configuration. Call the GET Configurations endpoint using opUnitId from the GET Staffing Request call."  
              type: integer
              example: 11
            birthMonth:
              description: "Required based on client configuration. Call the GET Configurations endpoint using opUnitId from the GET Staffing Request call."  
              type: integer
              example: 1
            last4NationalId:
              description: "Required based on client configuration. Call the GET Configurations endpoint using opUnitId from the GET Staffing Request call."  
              type: string
              example: '1111'
            aiAnalysisAllowed:
              description: "supplier would use to opt in/out the candidate from being analyzed by Maggi."
              type: boolean
              example: false
        resumePortfolio:
          type: object
          required:
          - summary
          - availabilityDate
          - skills
          properties:
            resume:
              type: string
              example: "Resume text in base64 encoded format"
            resumeFileName:
              type: string
              example: "Resume_File_Name.docx"
            summary:
              type: string
              example: "summary"
            supplierNotes:
              type: string
              example: "Testing"
            supplierContactName:
              type: string
              example: "Name Name"
            supplierContactEmail:
              type: string
              example: "Name.Name@test.com"
            availabilityDate:
              type: string
              format: date
              example: '2025-01-01'
            h1B:
              type: boolean
              example: true
              description: "Required based on client configuration. Call the GET Configurations endpoint using opUnitId from the GET Staffing Request call."  
            subContractedWorker:
              type: boolean
              example: true
              description: "Required based on client configuration. Call the GET Configurations endpoint using opUnitId from the GET Staffing Request call."  
            subContractorCompanyName:
              type: string
              example: "Test"
            subContractorPayRate:
              type: number
              example: 11
            supplierFLSAClassification:
              description: Required if Staffing Request clientLocationCountryCode = USA
              type: string
              example: "Exempt"
              enum:
                - "Computer Professional" 
                - "Exempt"
                - "NonExempt"
                - "Weekly Exempt"
            allowClientToForwardResume:
              type: boolean
              example: false
            skills:
              description: "The first five skills passed will be treated as the candidate’s Top 5. At least one skill must be included."
              type: array
              items:
                type: object
                properties:
                  name:
                    type: string
                    example: "Android"
                  year:
                    type: string
                    example: "10+"
                    enum:
                      - "<1" 
                      - "10+"
                      - 1
                      - 2
                      - 3
                      - 4
                      - 5
                      - 6
                      - 7
                      - 8
                      - 9
                      - 10
        billing:
          type: object
          required:
          - payRate
          - billRate
          properties:
            payRate:
              type: number
              example: 20
            billRate:
              type: number
              example: 30
            markUpViolationReason:
              description: Required when the mark-up is greater than the configured percentage for the Job Category and Location
              type: string
              example: "Additional payroll cost"
            multiRate:
              description: This section must be included for a Multi-Rate Request.
              type: array
              items:
                type: object
                properties:
                  id:
                    type: integer
                    example: 11111111
                  payRate:
                    type: number
                    example: 10
                  billRate:
                    type: number
                    example: 15
            perUnit:
              description: This section must be included for a Per Unit Request.
              type: array
              items:
                type: object
                properties:
                  id:
                    type: integer
                    example: 11111111
                  payRate:
                    type: number
                    example: 0
                  billRate:
                    type: number
                    example: 0
        experience:
          type: array
          items:
            type: object
            required:
            - jobTitle
            - companyName
            - startMonth
            - startYear
            properties:
              jobTitle:
                type: string
                example: "Senior Software Engineer"
              companyName:
                type: string
                example: "InforTechnical Solutions, Ltd."
              startMonth:
                type: integer
                example: 12
              startYear:
                type: integer
                example: 2000
              endMonth:
                description: Required if currentPosition = false
                type: integer
                example: 1
              endYear:
                description: Required if currentPosition = false
                type: integer
                example: 2001
              currentPosition:
                type: boolean
                example: false
              summary:
                type: string
                example: "Leading Hybrid application team of 10 developers."
        education:
          type: array
          items:
            type: object
            properties:
              school:
                type: string
                example: "University Of Central Missouri Warrensburg"
              degree:
                type: string
                example: "BACHELOR OF SCIENCE in Public Relations"
              description:
                type: string
                example: "Education BACHELOR OF SCIENCE in Public Relations & Creative Writing - 2005 to 2009"
              major:
                type: string
                example: "Public Relations & Creative Writing"
              startMonth:
                type: integer
                example: 12
              startYear:
                type: integer
                example: 2015
              endMonth:
                type: integer
                example: 1
              endYear:
                type: integer
                example: 2013
              currentlyEnrolled:
                type: boolean
                example: true
        languages:
          type: array
          items:
            type: object
            required:
            - code
            - speak
            - read
            - write
            properties:
              code:
                type: string
                example: en
              speak:
                type: boolean
                example: true
              read:
                type: boolean
                example: true
              write:
                type: boolean
                example: true
        militaryService:
          type: array
          items:
            type: object
            properties:
              rank:
                type: string
                example: "Captain"
              countryServed:
                type: string
                example: "India"
              serviceBranch:
                type: string
                example: "Navy"
              startMonth:
                type: integer
                example: 1
              startYear:
                type: integer
                example: 2015
              endMonth:
                type: integer
                example: 12
              endYear:
                type: integer
                example: 2024
              currentlyServing:
                type: boolean
                example: false
              Summary:
                type: string
                example: "Elite special operations force, specializing in high-stakes missions across sea, air, and land environments."
        certificatesLicenses:
          type: array
          items:
            type: object
            properties:
              certificatesLicenses:
                type: string
                example: "HVACR Master"
              startYear:
                type: integer
                example: 2025
        patents:
          type: array
          items:
            type: object
            properties:
              patentName:
                type: string
                example: "HVAC System Remote Monitoring and Diagnosis"
              requisitionNumber:
                type: string
                example: '5146636'
        publications:
          type: array
          items:
            type: object
            properties:
              title:
                type: string
                example: "How to Define and Reward Outstanding Performance in Every Role"
              publicationTitle:
                type: string
                example: "HVACR Business Magazine"
              publicationYear:
                type: integer
                example: 2020
        previousExperience:
          type: object
          properties:
            workerPreviousEmployee:
              description: "Required based on client configuration. Call the GET Configurations endpoint using opUnitId from the GET Staffing Request call."  
              type: boolean
              example: true
            empStartMonth:
              type: integer
              example: 1
            empStartYear:
              type: integer
              example: 2015
            empEndMonth:
              type: integer
              example: 1
            empEndyear:
              type: integer
              example: 2019
            empSupervisor:
              type: string
              example: "Bob Thomasson"
            workerPreviousContractor:
              description: "Required based on client configuration. Call the GET Configurations endpoint using opUnitId from the GET Staffing Request call."  
              type: boolean
              example: true
            contStartMonth:
              type: integer
              example: 1
            contStartYear:
              type: integer
              example: 2015
            contEndMonth:
              type: integer
              example: 1
            contEndYear:
              type: integer
              example: 2015
            contSupervisor:
              type: string
              example: "Marlina Mitchell"
            workerFamilyMemberAtClient:
              description: "Required based on client configuration. Call the GET Configurations endpoint using opUnitId from the GET Staffing Request call."  
              type: boolean
              example: true
            family:
              type: array
              items:
                type: object
                properties:
                  familyMemberName:
                    type: string
                    example: "Jon"
                  relationship:
                    type: string
                    example: "Parent"
                    enum:
                        - "Aunt/Uncle"
                        - "Child"
                        - "Grandparent"
                        - "In-Law"
                        - "Other"
                        - "Parent"
                        - "Sibling"
                        - "Spouse/Partner"
        customFields:
          type: array
          items:
            type: object
            properties:
              id:
                description: Required based on client custom field configuration. Call the GET Custom Fields endpoint using ClientID from the GET StaffingRequest endpoint.
                type: integer
                example: 11111111
              value:
                description: Required based on client custom field configuration. Call the GET Custom Fields endpoint using ClientID from the GET StaffingRequest endpoint.
                type: string
                example: "Yes"
        eeo:
          type: object
          properties:
            ageResponse:
              description: "Required based on client and country configuration. Call the GET Configurations endpoint using opUnitId and clientLocationCountryCode from the GET Staffing Request call."  
              type: string
              example: "21-39"
            disabilityResponse:
              description: "Required based on client and country configuration. Call the GET Configurations endpoint using opUnitId and clientLocationCountryCode from the GET Staffing Request call."
              type: string
              example: "No"
            ethnicityResponse:
              description: "Required based on client and country configuration. Call the GET Configurations endpoint using opUnitId and clientLocationCountryCode from the GET Staffing Request call."
              type: string
              example: "Pacific Islander"
            genderResponse:
              description: "Required based on client and country configuration. Call the GET Configurations endpoint using opUnitId and clientLocationCountryCode from the GET Staffing Request call."
              type: string
              example: "Female"
            veteranResponse:
              description: "Required based on client and country configuration. Call the GET Configurations endpoint using opUnitId and clientLocationCountryCode from the GET Staffing Request call."
              type: string
              example: "Veteran"
    
    CandidateSubmissionUpdate:
      type: object
      properties:
        supplierNotes:
          type: string
          example: "My notes"
        supplierContactName:
          type: string
          example: "Kelly Martino"
        supplierContactEmail:
          type: string
          example: "kmartino@company.com"
        resumeFeedback:
          type: string
          example: ""
        payRate:
          type: number
          example: 12.50
        billRate:
          type: number
          example: 15
        availability:
          type: string
          format: date
          example: "2025-08-01"
        supplierFlsaClassification:
          type: string
          example: "Exempt"
          enum:
            - "Computer Professional" 
            - "Exempt"
            - "NonExempt"
            - "Weekly Exempt"
        h1B:
          type: boolean
          example: true
        subContractedWorker:
          type: boolean
          example: true
        subContractorCompanyName:
          type: string
          example: ""
        subContractorPayRate:
          type: string
          example: ""
        multiRates:
          type: array
          items:
            type: object
            properties:
              id:
                type: integer
                example: 11111111
              payRate:
                type: number
                example: "12"
              billRate:
                type: number
                example: "15"
        perUnits:
          type: array
          items:
            type: object
            properties:
              id:
                type: integer
                example: 11111111
              payRate:
                type: number
                example: "12"
              billRate:
                type: number
                example: "15"

    CandidateWithdraw:    
      type: object
      properties:
        reason:
          type: string
          example: "Accepted competing offer"
          enum:
            - "Accepted competing offer"
            - "Accepted counteroffer"
            - "Admin Change"
            - "Candidate not interested in role"
            - "Candidate not interested post interview"
            - "Candidate relocation"
            - "Compensation mismatch"
            - "Feedback from previous position was negative (withdrawn post reference check)"
            - "Found another opportunity"
            - "Non-responsive candidate"
            - "Poor job stability"
            - "Position filled"
            - "Position mismatch"
            - "Prior candidate referral"
            
  securitySchemes:
    bearerAuth:
      type: http
      bearerFormat: JWT
      scheme: bearer
