> ## Documentation Index
> Fetch the complete documentation index at: https://api.docs.originone.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Update an order

> Changes an order placed at a location under a company linked to the API token and returns it. The body is a JSON Merge Patch (RFC 7396): a member left out keeps its value, `null` clears it, and an array replaces the whole list, except `participant.identifiers`, which is merged by type. `settings` says why the order changes and is required; a body with only `settings` changes nothing and returns the order. Every change is checked before any is saved. The participant’s `identifiers` are included only for tokens that also carry `order.participant.read`. Returns 400 at the member at fault, 422 when the order’s status or history no longer allows the change or no collection site can take it, 404 for any order the token cannot see, and 409 when `If-Match` names an older version. Requires the `order.update` scope.

> [!TIP]
>
> [Editing orders](https://api.docs.originone.ai/editing-orders.md) explains how the merge patch applies, the `settings` every request needs, and what to do when a request fails partway.


## OpenAPI

````yaml api-reference/openapi.json PATCH /api/v2/orders/{id}
openapi: 3.1.0
info:
  title: Origin One API
  description: REST API for integrating with the Origin One platform.
  version: '2'
  contact:
    name: Origin One
    url: https://origin.one
    email: support@originone.ai
servers:
  - url: https://api.stage.origin.one
    description: Staging
  - url: https://api.origin.one
    description: Production
security: []
tags:
  - name: agencies
    description: >-
      Regulatory agencies and the job categories they publish; the same for
      every API token.
  - name: jobCategories
    description: >-
      Job categories an agency publishes; an order with a DOT service under such
      an agency names one, required when the agency publishes more than one.
  - name: tenants
    description: >-
      Tenants your API token can act in: the direct child tenants of its own
      tenant that it has access to. Prefix a route with `/tenants/{tenantId}` to
      act in one.
  - name: clinics
    description: Collection sites where participants are tested.
  - name: companies
    description: Companies linked to your API token.
  - name: locations
    description: Company locations.
  - name: orders
    description: >-
      Drug and alcohol test orders: create them and follow their services to a
      result.
  - name: packages
    description: Packages of services that can be ordered.
  - name: services
    description: Services available to your API token.
paths:
  /api/v2/orders/{id}:
    patch:
      tags:
        - orders
      summary: Update an order
      description: >-
        Changes an order placed at a location under a company linked to the API
        token and returns it. The body is a JSON Merge Patch (RFC 7396): a
        member left out keeps its value, `null` clears it, and an array replaces
        the whole list, except `participant.identifiers`, which is merged by
        type. `settings` says why the order changes and is required; a body with
        only `settings` changes nothing and returns the order. Every change is
        checked before any is saved. The participant’s `identifiers` are
        included only for tokens that also carry `order.participant.read`.
        Returns 400 at the member at fault, 422 when the order’s status or
        history no longer allows the change or no collection site can take it,
        404 for any order the token cannot see, and 409 when `If-Match` names an
        older version. Requires the `order.update` scope.
      operationId: updateOrder
      parameters:
        - name: id
          required: true
          in: path
          description: Unique identifier of the resource.
          schema:
            type: string
            example: a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11
            description: Unique identifier of the resource.
        - name: If-Match
          in: header
          description: >-
            The `ETag` of the version this change is based on, from `GET
            /orders/{id}`. It is checked before anything is saved: when the
            order has changed since, the response is 409.
          required: false
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/merge-patch+json:
            schema:
              $ref: '#/components/schemas/OrderUpdate'
          application/json:
            schema:
              $ref: '#/components/schemas/OrderUpdate'
      responses:
        '200':
          headers:
            ETag:
              description: >-
                Version of the order; send it in `If-Match` to change only this
                version.
              schema:
                example: W/"5a1-Lr0V3wqYk6wX0Qp9c1xQyR8m2nA"
                type: string
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
        '400':
          description: The request failed validation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: The bearer token is missing, invalid, or expired.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: The API token lacks the required scope.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: The resource does not exist or is outside the API token’s access.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: >-
            The request conflicts with the resource’s current state or with
            another request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: The operation is not allowed in the resource’s current state.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        default:
          description: Unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - bearer: []
components:
  schemas:
    OrderUpdate:
      type: object
      properties:
        agency:
          anyOf:
            - type: object
              properties:
                id:
                  example: '1'
                  description: Unique identifier of the agency.
                  type: string
              required:
                - id
            - type: 'null'
          description: >-
            Regulatory agency, one of `GET /agencies`; `null` removes it.
            Required while the order has a DOT service, and not allowed
            otherwise.
        clinic:
          type: object
          properties:
            id:
              type: string
              description: Unique identifier of the clinic.
              example: '42'
          required:
            - id
          description: >-
            Collection site to move the order to, such as one from `GET
            /orders/{id}/clinics`; any clinic `GET /clinics/{id}` serves,
            offering every service on the order. Schedules an `ordered` order.
            Allowed until collection starts; for an `expired` or `noShow` order,
            only when its lab is Quest, LabCorp, CRL or Origin.
        expiresAt:
          type: string
          format: date-time
          description: >-
            When the order expires (ISO 8601 date-time with offset), at least
            one hour from now. An expired or no-show order becomes active again.
          example: '2026-10-30T17:00:00Z'
        jobCategory:
          type: object
          properties:
            id:
              type: string
              description: Unique identifier of the job category.
              example: 3987402f-e963-45a9-8799-b9ea6621adae
          required:
            - id
          description: >-
            DOT job category of the participant, one of those the order’s
            `agency` publishes (see `GET /agencies`). Required when `agency`
            changes to one that publishes more than one job category on an order
            with a DOT service; a sole category is assigned automatically.
        location:
          type: object
          properties:
            id:
              type: string
              description: Unique identifier of the location.
              example: '456'
          required:
            - id
          description: >-
            Location to move the order to; must be under a company linked to the
            API token, and offer the order’s package.
        otherTestReason:
          anyOf:
            - type: string
              minLength: 1
              maxLength: 30
            - type: 'null'
          description: >-
            Detail for a `testReason` of `other`, up to 30 characters; `null`
            clears it. Cleared automatically when `testReason` changes to
            another value.
          example: Court order
        packages:
          minItems: 1
          maxItems: 1
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: Unique identifier of the package.
                example: '789'
            required:
              - id
          description: >-
            The package to order instead, as a one-item list. Must be available
            at the location; allowed only until collection starts.
        participant:
          $ref: '#/components/schemas/OrderParticipantUpdateInput'
          description: Changes to the person being tested; only the members given change.
        settings:
          $ref: '#/components/schemas/OrderUpdateSettingsInput'
          description: >-
            Why the order is changing and what to send afterwards. Not part of
            the order; never returned.
        testReason:
          type: string
          enum:
            - blindSample
            - fitnessForDuty
            - followUp
            - jobTransfer
            - notIndicated
            - other
            - periodic
            - periodicMedical
            - postAccident
            - preEmployment
            - preSiteAccess
            - probation
            - promotion
            - random
            - reasonableSuspicion
            - returnToDuty
            - splitSpecimen
            - sweep
            - unauthorizedTest
            - unknown
            - injury
          description: Reason for the test.
          example: preEmployment
      required:
        - settings
    Order:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier of the order.
          example: a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11
        object:
          type: string
          description: Object type; always `order`.
          example: order
          enum:
            - order
        code:
          type: string
          description: Human-readable order code.
          example: CPmJ6QbYMo
        agency:
          anyOf:
            - $ref: '#/components/schemas/AgencyReference'
            - type: 'null'
          description: >-
            Regulatory agency the order was placed under; null for a
            non-regulated order.
        clinic:
          anyOf:
            - $ref: '#/components/schemas/ClinicReference'
            - type: 'null'
          description: Collection site; null until one is assigned.
        clinicSelectionUrl:
          anyOf:
            - type: string
              format: uri
            - type: 'null'
          description: >-
            Web page where someone picks the collection site, without signing
            in; null unless the order is `ordered` with no `clinic` and isn’t a
            `link` order. Anyone with it can see the participant’s address and
            choose the site.
          example: https://acme.originone.ai/collection-site/CPmJ6QbYMo
        company:
          anyOf:
            - $ref: '#/components/schemas/CompanyReference'
            - type: 'null'
          description: Company the order was placed for.
        createdAt:
          format: date-time
          type: string
          description: When the order was created.
          example: '2026-09-24T09:00:00.000Z'
        expiresAt:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          description: When the order expires; null when it does not.
          example: '2026-09-24T15:15:00.000Z'
        isFinal:
          type: boolean
          description: >-
            Whether the order has reached an outcome. Cancelled, expired and
            no-show orders report `false`; check `status` for those.
          example: false
        jobCategory:
          anyOf:
            - $ref: '#/components/schemas/JobCategoryReference'
            - type: 'null'
          description: DOT job category of the participant; null when the order has none.
        location:
          anyOf:
            - $ref: '#/components/schemas/LocationReference'
            - type: 'null'
          description: Location the order was placed at.
        matched:
          $ref: '#/components/schemas/OrderMatched'
          description: >-
            Present on a create response when an equivalent existing order was
            returned instead.
        otherTestReason:
          description: Detail for a `testReason` of `other`; null when none was given.
          example: courtOrdered
          type:
            - string
            - 'null'
        packages:
          type: array
          items:
            $ref: '#/components/schemas/PackageReference'
          description: Packages the order was created from.
        participant:
          $ref: '#/components/schemas/OrderParticipant'
          description: The person being tested.
        schedulingUrl:
          anyOf:
            - type: string
              format: uri
            - type: 'null'
          description: >-
            Web page where the participant completes a `link` order, the one the
            link they receive opens; null unless a `link` order is `ordered`.
          example: https://acme.originone.ai/schedule/CPmJ6QbYMo
        services:
          type: array
          items:
            $ref: '#/components/schemas/OrderService'
          description: Services on the order, in creation order.
        status:
          anyOf:
            - type: string
              enum:
                - adulterated
                - cancelled
                - complete
                - expired
                - fail
                - fitForDuty
                - incomplete
                - integrationError
                - negative
                - lostInTransit
                - nonNegative
                - noShow
                - notFitForDuty
                - ordered
                - pass
                - pending
                - positive
                - released
                - scheduled
                - substituted
                - testCancelled
                - testNotPerformed
                - unobtainable
            - type: string
          description: Current order status; new values may appear.
          example: pending
        statusUpdatedAt:
          format: date-time
          type: string
          description: >-
            When the order status last changed; the creation time until the
            first change.
          example: '2026-09-24T15:15:00.000Z'
        testReason:
          anyOf:
            - anyOf:
                - type: string
                  enum:
                    - blindSample
                    - fitnessForDuty
                    - followUp
                    - jobTransfer
                    - notIndicated
                    - other
                    - periodic
                    - periodicMedical
                    - postAccident
                    - preEmployment
                    - preSiteAccess
                    - probation
                    - promotion
                    - random
                    - reasonableSuspicion
                    - returnToDuty
                    - splitSpecimen
                    - sweep
                    - unauthorizedTest
                    - unknown
                    - injury
                - type: string
            - type: 'null'
          description: Reason for the test.
          example: preEmployment
        updatedAt:
          format: date-time
          type: string
          description: When the order was last updated.
          example: '2026-09-24T15:20:00.000Z'
        url:
          type: string
          description: Canonical path of this resource, relative to the API origin.
          example: /api/v2/orders/a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11
          format: uri-reference
      required:
        - id
        - object
        - code
        - agency
        - clinic
        - clinicSelectionUrl
        - company
        - createdAt
        - expiresAt
        - isFinal
        - jobCategory
        - location
        - otherTestReason
        - packages
        - participant
        - schedulingUrl
        - services
        - status
        - statusUpdatedAt
        - testReason
        - updatedAt
        - url
    Error:
      type: object
      properties:
        error:
          type: string
          description: HTTP status reason phrase.
          example: Bad Request
        errors:
          type: array
          items:
            type: object
            properties:
              code:
                anyOf:
                  - type: string
                    enum:
                      - backgroundCheckIntegrationNotConfigured
                      - badRequest
                      - conflict
                      - insufficientScope
                      - internalError
                      - invalidElement
                      - invalidFormat
                      - invalidKey
                      - invalidScheduleStrategy
                      - invalidState
                      - invalidType
                      - invalidUnion
                      - invalidValue
                      - linkRequiredBackground
                      - notFound
                      - notMultipleOf
                      - required
                      - scheduleClinicExcludedByFeeCap
                      - scheduleConfiguredClinicUnavailable
                      - tooBig
                      - tooManyRequests
                      - tooSmall
                      - unauthenticated
                      - unrecognizedKeys
                  - type: string
                description: >-
                  Machine-readable error code. New codes may be added; treat
                  unknown codes by `statusCode`.
                example: tooSmall
              detail:
                type: string
                description: Human-readable explanation.
                example: 'Too small: expected number to be >=1'
              meta:
                description: Additional machine-readable context.
                type: object
                propertyNames:
                  type: string
                additionalProperties: {}
              source:
                description: Present only when a request field is at fault.
                type: object
                properties:
                  pointer:
                    type: string
                    description: JSON pointer to the request field at fault.
                    example: /page
                required:
                  - pointer
            required:
              - code
              - detail
          description: One entry per problem found.
        statusCode:
          type: integer
          description: HTTP status code.
          example: 400
      required:
        - error
        - errors
        - statusCode
    OrderParticipantUpdateInput:
      type: object
      properties:
        address:
          $ref: '#/components/schemas/AddressUpdateInput'
          description: Postal address; only the members given change. It cannot be removed.
        birthDate:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          description: Date of birth (ISO 8601 date); `null` clears it.
          example: '1980-11-11'
        email:
          anyOf:
            - type: string
              format: email
            - type: 'null'
          description: Email address; `null` clears it.
          example: john.doe@example.com
        firstName:
          type: string
          minLength: 1
          description: First name.
          example: John
        identifiers:
          type: array
          items:
            $ref: '#/components/schemas/ParticipantIdentifierUpdateInput'
          description: >-
            Government and employer identifiers to change, at most one of each
            type, merged by type: each entry replaces the stored identifier of
            its type, a `null` value removes it, and a type left out is kept. At
            least one identifier must remain.
        lastName:
          type: string
          minLength: 1
          description: Last name.
          example: Doe
        middleName:
          anyOf:
            - type: string
              minLength: 1
              description: Middle name; `null` clears it.
              example: Q
            - type: 'null'
        phone:
          anyOf:
            - description: Phone number; national or E.164 spelling, stored as E.164.
              example: '+13033232323'
              type: string
            - type: 'null'
          description: Phone number, stored as E.164; `null` clears it.
          example: '+13033232323'
    OrderUpdateSettingsInput:
      type: object
      properties:
        changeReason:
          type: string
          enum:
            - missingInformation
            - misspelling
            - other
            - wrongParticipantLocation
            - wrongParticipantName
            - wrongReasonForTest
          description: Why the order is being changed; recorded in the order’s history.
          example: misspelling
        otherChangeReason:
          type: string
          minLength: 1
          maxLength: 60
          description: >-
            Detail for a `changeReason` of `other`, up to 60 characters;
            required with `other` and not allowed otherwise.
          example: Participant moved
        clinicSelectionMode:
          type: string
          enum:
            - closestToParticipant
            - configured
            - requesterSelects
          description: >-
            How the new collection site is chosen when `packages` changes the
            package and the order’s site can’t collect it, or the order has
            none; ignored otherwise. `closestToParticipant` takes the nearest
            site within 100 miles that offers every service, and needs the
            participant’s address `line1`, `city` and `postalCode`; `configured`
            takes the location’s first configured site for the package that
            does. Both schedule an `ordered` order, and refuse the edit when no
            site qualifies. `requesterSelects` picks no site and is allowed only
            while the order is `ordered`. Not allowed with `clinic`.
          example: closestToParticipant
        reIssueDocuments:
          description: >-
            Whether to regenerate the order’s documents after the change.
            Ignored while the order is `ordered`, `expired` or `noShow`.
          example: true
          anyOf:
            - type: boolean
            - type: number
              enum:
                - 1
            - type: number
              enum:
                - 0
            - type: string
              enum:
                - 'true'
            - type: string
              enum:
                - 'false'
        resendNotifications:
          description: Whether to send the order’s current status notification again.
          example: true
          anyOf:
            - type: boolean
            - type: number
              enum:
                - 1
            - type: number
              enum:
                - 0
            - type: string
              enum:
                - 'true'
            - type: string
              enum:
                - 'false'
      required:
        - changeReason
    AgencyReference:
      type: object
      properties:
        code:
          type: string
          description: Agency code, as regulations name it.
          example: FAA
        id:
          type: string
          description: Unique identifier of the agency.
          example: '3'
        object:
          type: string
          description: Object type; always `agency`.
          example: agency
          enum:
            - agency
        url:
          type: string
          description: Canonical path of this resource, relative to the API origin.
          example: /api/v2/agencies/3
          format: uri-reference
      required:
        - code
        - id
        - object
        - url
    ClinicReference:
      type: object
      properties:
        address:
          anyOf:
            - $ref: '#/components/schemas/Address'
            - type: 'null'
          description: Postal address; null when the clinic has none.
        id:
          type: string
          description: Unique identifier of the clinic.
          example: '42'
        name:
          type: string
          description: Clinic name.
          example: Austin Downtown Clinic
        object:
          type: string
          description: Object type; always `clinic`.
          example: clinic
          enum:
            - clinic
        phone:
          description: Primary phone number.
          example: +1-512-555-0100
          type:
            - string
            - 'null'
        url:
          type: string
          description: Canonical path of this resource, relative to the API origin.
          example: /api/v2/clinics/42
          format: uri-reference
      required:
        - address
        - id
        - name
        - object
        - phone
        - url
    CompanyReference:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier of the company.
          example: '123'
        name:
          type: string
          description: Company name.
          example: Acme Inc
        object:
          type: string
          description: Object type; always `company`.
          example: company
          enum:
            - company
        url:
          type: string
          description: Canonical path of this resource, relative to the API origin.
          example: /api/v2/companies/123
          format: uri-reference
      required:
        - id
        - name
        - object
        - url
    JobCategoryReference:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier of the job category.
          example: 3987402f-e963-45a9-8799-b9ea6621adae
        name:
          type: string
          description: Job category name.
          example: Flight Crewmember
        object:
          type: string
          description: Object type; always `jobCategory`.
          example: jobCategory
          enum:
            - jobCategory
        url:
          type: string
          description: Canonical path of this resource, relative to the API origin.
          example: >-
            /api/v2/agencies/3/jobCategories/3987402f-e963-45a9-8799-b9ea6621adae
          format: uri-reference
      required:
        - id
        - name
        - object
        - url
    LocationReference:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier of the location.
          example: '456'
        name:
          type: string
          description: Location name.
          example: Acme Downtown
        object:
          type: string
          description: Object type; always `location`.
          example: location
          enum:
            - location
        url:
          type: string
          description: Canonical path of this resource, relative to the API origin.
          example: /api/v2/locations/456
          format: uri-reference
      required:
        - id
        - name
        - object
        - url
    OrderMatched:
      type: object
      properties:
        originalSource:
          type: string
          description: Where the matched order was created.
          example: app
        score:
          type: number
          description: Match confidence, 0 to 100.
          example: 100
      required:
        - originalSource
        - score
    PackageReference:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier of the package.
          example: '789'
        name:
          type: string
          description: Package name, as the tenant calls it.
          example: DOT Pre-Employment Drug Test
        object:
          type: string
          description: Object type; always `package`.
          example: package
          enum:
            - package
        url:
          type: string
          description: Canonical path of this resource, relative to the API origin.
          example: /api/v2/packages/789
          format: uri-reference
      required:
        - id
        - name
        - object
        - url
    OrderParticipant:
      type: object
      properties:
        address:
          anyOf:
            - $ref: '#/components/schemas/Address'
            - type: 'null'
          description: Postal address; null when none was provided.
        birthDate:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          description: Date of birth (ISO 8601 date).
          example: '1980-11-11'
        email:
          description: Email address.
          example: john.doe@example.com
          type:
            - string
            - 'null'
        firstName:
          description: First name.
          example: John
          type:
            - string
            - 'null'
        identifiers:
          type: array
          items:
            $ref: '#/components/schemas/ParticipantIdentifier'
          description: >-
            Government and employer identifiers. Present only for API tokens
            with the `order.participant.read` scope, and never on a
            cancellation.
        lastName:
          description: Last name.
          example: Doe
          type:
            - string
            - 'null'
        middleName:
          description: Middle name.
          example: Q
          type:
            - string
            - 'null'
        phone:
          description: Phone number (E.164).
          example: '+13033232323'
          type:
            - string
            - 'null'
      required:
        - address
        - birthDate
        - email
        - firstName
        - lastName
        - middleName
        - phone
    OrderService:
      type: object
      properties:
        attributes:
          anyOf:
            - $ref: '#/components/schemas/ServiceAttributes'
            - type: 'null'
          description: >-
            Testing category and specimen type; null when the service has
            neither.
        courierServiceName:
          description: Courier carrying the specimen.
          example: FedEx
          type:
            - string
            - 'null'
        id:
          type: string
          description: Unique identifier of the service on this order.
        isDot:
          type: boolean
          description: Whether the service is a DOT-regulated test.
          example: false
        isFinal:
          type: boolean
          description: Whether the service status is terminal.
          example: false
        lab:
          anyOf:
            - $ref: '#/components/schemas/VendorReference'
            - type: 'null'
          description: Lab testing the specimen; null when none is named.
        name:
          type: string
          description: Service name.
          example: 5 Panel Urine
        object:
          type: string
          description: Object type; always `orderService`.
          example: orderService
          enum:
            - orderService
        screenHistory:
          type: array
          items:
            $ref: '#/components/schemas/OrderServiceScreenHistory'
          description: >-
            Milestones reached so far, in screening order; one not reached yet
            is absent.
        specimenId:
          description: Specimen identifier.
          example: SP-1
          type:
            - string
            - 'null'
        status:
          anyOf:
            - type: string
              enum:
                - adulterated
                - adulterated_failACTC
                - adulterated_failTC
                - cancelled
                - lostInTransit
                - complete
                - complete_abnormal
                - complete_critical
                - complete_allergy
                - complete_allergy_fever
                - complete_clear
                - complete_deferred
                - complete_discrepancy
                - complete_disqualified
                - complete_dryMouth
                - complete_fever
                - complete_hits
                - complete_meetsStandards
                - complete_meetsStandardsWithRestrictions
                - complete_MROReportReleased
                - complete_noHits
                - complete_noMatch
                - complete_noRecord
                - complete_noReviewNoReport
                - complete_notClear
                - complete_notMeetsStandards
                - complete_outOfScope
                - complete_periodicMonitoringRequired
                - complete_record
                - complete_reject
                - complete_seeComments
                - complete_forBilling
                - complete_requiresProviderAssessment
                - complete_unableToVerify
                - complete_unknown
                - complete_verified
                - declined
                - expired
                - fail
                - fitForDuty
                - incomplete
                - incomplete_collectionCompletedNoInsufficientSpecimenProvided
                - incomplete_collectionCompleteNotEnoughSpecimenProvided
                - incomplete_qnsQuantityNotSufficient
                - incomplete_donorUnable
                - incomplete_excused
                - incomplete_incompleteExamination
                - incomplete_invalid
                - incomplete_labReject
                - incomplete_refusalToTest
                - incomplete_shyBladder
                - incomplete_shyLung
                - integrationError
                - negative
                - negative_negativeDilute
                - negative_negativeSeeReport
                - nonNegative
                - noShow
                - notFitForDuty
                - notRun
                - ordered
                - pass
                - pending
                - pending_additionalResearchNeeded
                - pending_arrivedAtTheClinic
                - pending_atTheLab
                - pending_awaitingMROContact
                - pending_awaitingReview
                - pending_awaitingSignOff
                - pending_collectionCompleted
                - pending_collectionInitiated
                - pending_collectionSuspended
                - pending_derNotificationRequired
                - pending_determinationPending
                - pending_inMROReview
                - pending_inProcess
                - pending_inRecovery
                - pending_pendingAffidavit
                - pending_pendingFax
                - pending_pendingMRO
                - pending_pendingMROCCF
                - pending_possibleHitsFound
                - pending_presumptivePositive
                - pending_resultPending
                - pending_review
                - pending_sentToLab
                - pending_shyBladder
                - pending_unableToContact
                - pending_underReview
                - pending_collectionCancelled
                - pending_processingCancelled
                - pending_processingCompleted
                - positive
                - positive_positiveDilute
                - positive_positiveUntilPrescriptionVerified
                - positive_positiveDiluteUntilPrescriptionVerified
                - positive_positiveUnableContactDonor
                - processing_incompleteExamination
                - released
                - scheduled
                - substituted
                - testCancelled
                - testNotPerformed
                - unobtainable
                - notReported
            - type: string
          description: >-
            Current service status. Values follow the `family_detail`
            convention; new details may appear.
          example: pending_collectionCompleted
        statusHistory:
          type: array
          items:
            $ref: '#/components/schemas/OrderServiceStatusHistory'
          description: Status changes, oldest first.
        statusUpdatedAt:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          description: When the status last changed.
          example: '2026-09-24T15:15:00.000Z'
        trackingNumber:
          description: Courier tracking number.
          example: 1Z999AA10123456784
          type:
            - string
            - 'null'
      required:
        - attributes
        - courierServiceName
        - id
        - isDot
        - isFinal
        - lab
        - name
        - object
        - screenHistory
        - specimenId
        - status
        - statusHistory
        - statusUpdatedAt
        - trackingNumber
    AddressUpdateInput:
      type: object
      properties:
        city:
          type: string
          minLength: 1
          description: City.
          example: Los Angeles
        country:
          type: string
          enum:
            - US
            - CA
          description: Country code (ISO 3166-1 alpha-2); US or CA. Requires `state`.
          example: US
        line1:
          type: string
          minLength: 1
          description: First line of the street address.
          example: 21143 Hawthorne Blvd
        line2:
          anyOf:
            - type: string
              minLength: 1
              description: Second line of the street address; `null` clears it.
              example: Suite 400
            - type: 'null'
        postalCode:
          type: string
          minLength: 1
          description: Postal code; US `12345` or `12345-6789`, Canada `A1A 1A1`.
          example: '90503'
        state:
          type: string
          minLength: 2
          maxLength: 2
          description: State or province code, in the address’s country.
          example: CA
    ParticipantIdentifierUpdateInput:
      oneOf:
        - type: object
          properties:
            type:
              type: string
              description: Kind of identifier.
              enum:
                - ssn
            value:
              anyOf:
                - type: string
                  minLength: 1
                  description: >-
                    Social Security number; one sent back masked, as the order
                    returns it, is kept. `null` removes the identifier.
                  example: 123-12-1234
                - type: 'null'
          required:
            - type
            - value
        - type: object
          properties:
            type:
              type: string
              description: Kind of identifier.
              enum:
                - employerId
            value:
              anyOf:
                - type: string
                  minLength: 1
                  description: Employer-assigned identifier. `null` removes the identifier.
                  example: E-42
                - type: 'null'
          required:
            - type
            - value
        - type: object
          properties:
            issuingCountry:
              default: US
              description: Issuing country code; US or CA.
              example: US
              type: string
              enum:
                - US
                - CA
            issuingState:
              type: string
              minLength: 2
              maxLength: 2
              description: Issuing state or province code; required with a `value`.
              example: CA
            type:
              type: string
              description: Kind of identifier.
              enum:
                - driverLicense
            value:
              anyOf:
                - type: string
                  minLength: 1
                  description: License number. `null` removes the identifier.
                  example: D1234567
                - type: 'null'
          required:
            - type
            - value
    Address:
      type: object
      properties:
        city:
          description: City or town.
          example: Seattle
          type:
            - string
            - 'null'
        country:
          description: Country code.
          example: US
          type:
            - string
            - 'null'
        line1:
          description: First line of the street address.
          example: 123 Main St
          type:
            - string
            - 'null'
        line2:
          description: Second line of the street address.
          example: Suite 400
          type:
            - string
            - 'null'
        object:
          type: string
          description: Object type; always `address`.
          example: address
          enum:
            - address
        postalCode:
          description: Postal or ZIP code.
          example: '98101'
          type:
            - string
            - 'null'
        state:
          description: State or region code.
          example: WA
          type:
            - string
            - 'null'
      required:
        - city
        - country
        - line1
        - line2
        - object
        - postalCode
        - state
    ParticipantIdentifier:
      type: object
      properties:
        issuingCountry:
          description: Issuing country code; set for a driver’s license.
          example: US
          type:
            - string
            - 'null'
        issuingState:
          description: Issuing state or province code; set for a driver’s license.
          example: WA
          type:
            - string
            - 'null'
        object:
          type: string
          description: Object type; always `participantIdentifier`.
          example: participantIdentifier
          enum:
            - participantIdentifier
        type:
          anyOf:
            - type: string
              enum:
                - ssn
                - driverLicense
                - employerId
            - type: string
          description: >-
            Kind of identifier. New values may be added; skip one you do not
            know.
          example: driverLicense
        value:
          type: string
          description: >-
            The identifier. A Social Security number is masked to its last four
            digits.
          example: D1234567
      required:
        - issuingCountry
        - issuingState
        - object
        - type
        - value
    ServiceAttributes:
      type: object
      properties:
        category:
          anyOf:
            - anyOf:
                - type: string
                  enum:
                    - dot
                    - dotLookalike
                    - instantTestAllInOneCup
                    - instantTestOral
                    - nonStandardPanels
                    - oral
                    - standardPanels
                    - standardPanelsPlusExpOpi
                    - standardPanelsPlusExpOpiPlusFentanyl
                    - standardPanelsPlusExpOpiPlusMdma
                    - standardPanelsPlusExpOpiPlusMdmaPlusFentanyl
                    - standardPanelsPlusMdmaPlusExpOpiPlusOxy
                    - urine
                - type: string
            - type: 'null'
          description: Testing category. New values may be added.
          example: standardPanels
        type:
          anyOf:
            - anyOf:
                - type: string
                  enum:
                    - blood
                    - hair
                    - oral
                    - urine
                - type: string
            - type: 'null'
          description: Specimen type. New values may be added.
          example: urine
      required:
        - category
        - type
    VendorReference:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier of the vendor.
          example: 64cba816-3c52-4a63-9d0e-0f2b5d1a7e11
        name:
          type: string
          description: Vendor name.
          example: CRL
        object:
          type: string
          description: Object type; always `vendor`.
          example: vendor
          enum:
            - vendor
        type:
          anyOf:
            - type: string
              enum:
                - mro
                - lab
                - payment
                - bgc
                - other
                - tpa
                - system
            - type: string
          description: What the vendor does. New values may be added.
          example: lab
      required:
        - id
        - name
        - object
        - type
    OrderServiceScreenHistory:
      type: object
      properties:
        object:
          type: string
          description: Object type; always `orderServiceScreenHistory`.
          example: orderServiceScreenHistory
          enum:
            - orderServiceScreenHistory
        occurredAt:
          format: date-time
          type: string
          description: When the milestone was reached.
          example: '2026-09-24T15:15:00.000Z'
        type:
          anyOf:
            - type: string
              enum:
                - inMROReview
                - labReceived
                - notApplicable
                - ordered
                - resultReceived
                - resultReleased
                - specimenCollected
            - type: string
          description: >-
            Milestone reached. New values may be added; skip one you do not
            know.
          example: specimenCollected
      required:
        - object
        - occurredAt
        - type
    OrderServiceStatusHistory:
      type: object
      properties:
        groupType:
          anyOf:
            - type: string
              enum:
                - inMROReview
                - labReceived
                - notApplicable
                - ordered
                - resultReceived
                - resultReleased
                - specimenCollected
            - type: string
          description: Milestone the status belongs to.
          example: specimenCollected
        object:
          type: string
          description: Object type; always `orderServiceStatusHistory`.
          example: orderServiceStatusHistory
          enum:
            - orderServiceStatusHistory
        occurredAt:
          format: date-time
          type: string
          description: When the status happened, such as the collection time.
          example: '2026-09-24T15:15:00.000Z'
        status:
          anyOf:
            - type: string
              enum:
                - adulterated
                - adulterated_failACTC
                - adulterated_failTC
                - cancelled
                - lostInTransit
                - complete
                - complete_abnormal
                - complete_critical
                - complete_allergy
                - complete_allergy_fever
                - complete_clear
                - complete_deferred
                - complete_discrepancy
                - complete_disqualified
                - complete_dryMouth
                - complete_fever
                - complete_hits
                - complete_meetsStandards
                - complete_meetsStandardsWithRestrictions
                - complete_MROReportReleased
                - complete_noHits
                - complete_noMatch
                - complete_noRecord
                - complete_noReviewNoReport
                - complete_notClear
                - complete_notMeetsStandards
                - complete_outOfScope
                - complete_periodicMonitoringRequired
                - complete_record
                - complete_reject
                - complete_seeComments
                - complete_forBilling
                - complete_requiresProviderAssessment
                - complete_unableToVerify
                - complete_unknown
                - complete_verified
                - declined
                - expired
                - fail
                - fitForDuty
                - incomplete
                - incomplete_collectionCompletedNoInsufficientSpecimenProvided
                - incomplete_collectionCompleteNotEnoughSpecimenProvided
                - incomplete_qnsQuantityNotSufficient
                - incomplete_donorUnable
                - incomplete_excused
                - incomplete_incompleteExamination
                - incomplete_invalid
                - incomplete_labReject
                - incomplete_refusalToTest
                - incomplete_shyBladder
                - incomplete_shyLung
                - integrationError
                - negative
                - negative_negativeDilute
                - negative_negativeSeeReport
                - nonNegative
                - noShow
                - notFitForDuty
                - notRun
                - ordered
                - pass
                - pending
                - pending_additionalResearchNeeded
                - pending_arrivedAtTheClinic
                - pending_atTheLab
                - pending_awaitingMROContact
                - pending_awaitingReview
                - pending_awaitingSignOff
                - pending_collectionCompleted
                - pending_collectionInitiated
                - pending_collectionSuspended
                - pending_derNotificationRequired
                - pending_determinationPending
                - pending_inMROReview
                - pending_inProcess
                - pending_inRecovery
                - pending_pendingAffidavit
                - pending_pendingFax
                - pending_pendingMRO
                - pending_pendingMROCCF
                - pending_possibleHitsFound
                - pending_presumptivePositive
                - pending_resultPending
                - pending_review
                - pending_sentToLab
                - pending_shyBladder
                - pending_unableToContact
                - pending_underReview
                - pending_collectionCancelled
                - pending_processingCancelled
                - pending_processingCompleted
                - positive
                - positive_positiveDilute
                - positive_positiveUntilPrescriptionVerified
                - positive_positiveDiluteUntilPrescriptionVerified
                - positive_positiveUnableContactDonor
                - processing_incompleteExamination
                - released
                - scheduled
                - substituted
                - testCancelled
                - testNotPerformed
                - unobtainable
                - notReported
            - type: string
          description: Service status at that moment.
          example: pending_collectionCompleted
      required:
        - groupType
        - object
        - occurredAt
        - status
  securitySchemes:
    bearer:
      description: >-
        Origin One API token. Pass it in the Authorization header:
        `Authorization: Bearer <token>`.
      scheme: bearer
      type: http

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.