OneRail Operations API

The OmniPoint Operations (Operation Dashboard) API administers the shipper account behind the Delivery API: organizations and their preferences, pickup and drop-off locations with service hours and cut-off times, users and roles, teams, markets and zones, fleet assets and vehicles, drivers, logistics partners and carrier contracts, service levels and SLAs, holidays, notifications, and the App ID / API Key credential records used to authenticate machine-to-machine integrations.

OpenAPI Specification

onerail-operations-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  version: 1.0.0
  title: OneRail Operation Dashboard
  description: Defines Operations Dashboard APIs
  license:
    name: UNLICENSED
    url: ''
servers:
- url: /
  description: Default relative server URL
security:
- bearer: []
paths:
  /:
    x-exegesis-controller: Home
    get:
      summary: Health check
      operationId: index
      security: []
      tags:
      - Home
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
    head:
      operationId: healthCheck
      responses:
        default:
          description: Health check passed.
      security: []
      summary: Health check
      tags:
      - HealthCheck
  /health/ready:
    x-exegesis-controller: ReadinessCheck
    get:
      summary: Readiness check
      operationId: getReadinessCheck
      security: []
      tags:
      - Readiness Check
      responses:
        '200':
          description: Service is ready.
          content:
            application/json:
              schema:
                type: object
        '503':
          description: Service is not ready
          content:
            application/json:
              schema:
                type: object
  /v1/login/ord-sso-assert-and-login/{organizationId}:
    parameters:
    - name: organizationId
      in: path
      required: true
      schema:
        type: string
    post:
      x-exegesis-controller: Authentication
      summary: Post assert SAML data to OneRail then generate Access Token
      operationId: ordSsoAssertAndLogin
      tags:
      - Authentication
      security: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: User's authentication response.
              properties:
                accessToken:
                  type: string
                  description: User's JWT token
                refreshToken:
                  type: string
                  description: Token client can use to refresh access token
                id:
                  type: string
                  description: User's ID
                emailAddress:
                  type: string
                  description: User's Email address
                firstName:
                  type: string
                  description: User's Firstname
                lastName:
                  type: string
                  description: User's Lastname
                organizationId:
                  type: string
                  description: User's Organization ID
                redirectUrl:
                  type: string
                  description: SSO Redirect URL
      responses:
        '200':
          description: Redirect
        default:
          $ref: '#/paths/~1v1~1routes/get/responses/404'
  /v1/login:
    post:
      x-exegesis-controller: Authentication
      summary: Login User.
      operationId: login
      tags:
      - Authentication
      security: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - emailAddress
              - password
              properties:
                emailAddress:
                  $ref: '#/paths/~1v1~1reset-password/post/requestBody/content/application~1json/schema/properties/emailAddress'
                password:
                  type: string
                  description: Password
                  format: password
      responses:
        '200':
          description: User Authentication Payload
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/paths/~1v1~1refresh-token/post/responses/200/content/application~1json/schema'
                - type: object
                  description: User
                  required:
                  - emailAddress
                  - firstName
                  - lastName
                  - organizationId
                  properties:
                    id:
                      type: string
                    createdById:
                      type: string
                    emailAddress:
                      type: string
                      format: email
                    firstName:
                      type: string
                    lastName:
                      type: string
                    phoneNumber:
                      type: string
                      nullable: true
                    active:
                      type: boolean
                    driver:
                      description: Driver
                      type: object
                      nullable: true
                      default: null
                      properties:
                        id:
                          type: string
                          format: uuid
                          nullable: true
                        enableDriverPayout:
                          type: boolean
                          nullable: true
                        driverPayoutBaseRate:
                          type: number
                          format: float
                        driverPayoutUseDefault:
                          type: boolean
                          nullable: true
                    title:
                      type: string
                      nullable: true
                    organizationId:
                      type: string
                      format: uuid
                    teamIds:
                      type: array
                      items:
                        type: string
                        format: uuid
                    roles:
                      type: array
                      items:
                        type: object
                        description: Role
                        required:
                        - id
                        - name
                        properties:
                          id:
                            type: string
                            format: uuid
                          name:
                            type: string
                    employeeId:
                      type: string
                      nullable: true
                    fleetId:
                      type: string
                      nullable: true
                    mvrCertified:
                      type: boolean
                      nullable: false
                      default: false
                    organizations:
                      type: array
                      items:
                        type: string
                    preferences:
                      $ref: '#/paths/~1v1~1preferences~1%7BcontextId%7D/get/responses/200/content/application~1json/schema'
        default:
          $ref: '#/paths/~1v1~1routes/get/responses/404'
  /v1/login/sso-token:
    post:
      x-exegesis-controller: Authentication
      summary: Login User with a single sign on token.
      operationId: loginWithSsoToken
      tags:
      - Authentication
      security: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - ssoToken
              properties:
                ssoToken:
                  type: string
                emailAddress:
                  $ref: '#/paths/~1v1~1reset-password/post/requestBody/content/application~1json/schema/properties/emailAddress'
      responses:
        '200':
          description: User Authentication Payload
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/paths/~1v1~1refresh-token/post/responses/200/content/application~1json/schema'
                - $ref: '#/paths/~1v1~1login/post/responses/200/content/application~1json/schema/allOf/1'
        default:
          $ref: '#/paths/~1v1~1routes/get/responses/404'
  /v1/verify-email:
    get:
      x-exegesis-controller: Authentication
      summary: Verify a FedEx SSO merchant email address.
      operationId: verifyEmail
      tags:
      - Authentication
      security: []
      parameters:
      - name: verificationToken
        in: query
        required: true
        schema:
          type: string
        description: JWT verification token from the email verification link.
      responses:
        '302':
          description: Redirects to the FedEx frontend with either ssoToken or emailVerificationError query params.
        default:
          $ref: '#/paths/~1v1~1routes/get/responses/404'
  /v1/refresh-token:
    post:
      x-exegesis-controller: Authentication
      summary: Refresh JWT token
      description: Refreshes JWT token
      operationId: refreshToken
      tags:
      - Authentication
      security: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
              - refreshToken
              properties:
                refreshToken:
                  type: string
                  description: Token client can use to refresh access token
      responses:
        '200':
          description: Refreshed access token
          content:
            application/json:
              schema:
                type: object
                description: User's authentication payload.
                required:
                - accessToken
                - refreshToken
                properties:
                  accessToken:
                    type: string
                    description: User's JWT token
                  refreshToken:
                    type: string
                    description: Token client can use to refresh access token
        default:
          $ref: '#/paths/~1v1~1routes/get/responses/404'
  /v1/reset-password:
    post:
      x-exegesis-controller: Authentication
      summary: Reset user password
      description: Kicks off user's password reset process and sends an email
      operationId: resetPassword
      security: []
      tags:
      - Authentication
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - emailAddress
              properties:
                emailAddress:
                  type: string
                  description: Email address
                  format: email
                uiRedesign:
                  type: boolean
                  description: Set to true for redesign link
                  default: false
      responses:
        '200':
          $ref: '#/paths/~1v1~1bulk-dispatch/post/responses/200'
  /v1/reset-token-valid:
    post:
      x-exegesis-controller: Authentication
      summary: Check validity of reset token
      description: Check validity of reset token
      operationId: validateResetToken
      tags:
      - Authentication
      security: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
              - resetToken
              properties:
                resetToken:
                  type: string
                  description: Token client can use to reset password
      responses:
        '200':
          description: is Reset token valid
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: True if operation was successful
        default:
          $ref: '#/paths/~1v1~1routes/get/responses/404'
  /v1/update-password:
    post:
      x-exegesis-controller: Authentication
      summary: Updates user's password.
      operationId: updatePassword
      security: []
      tags:
      - Authentication
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - resetToken
              - newPassword
              properties:
                resetToken:
                  type: string
                  description: reset token
                newPassword:
                  description: User's new password
                  $ref: '#/paths/~1v1~1login/post/requestBody/content/application~1json/schema/properties/password'
      responses:
        '200':
          description: access and refresh tokens
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/paths/~1v1~1refresh-token/post/responses/200/content/application~1json/schema'
                - $ref: '#/paths/~1v1~1login/post/responses/200/content/application~1json/schema/allOf/1'
        default:
          $ref: '#/paths/~1v1~1routes/get/responses/404'
  /v1/check-sso:
    post:
      x-exegesis-controller: Authentication
      summary: Check user if part of single sign on org.
      operationId: checkSSO
      tags:
      - Authentication
      security: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - emailAddress
              properties:
                emailAddress:
                  $ref: '#/paths/~1v1~1reset-password/post/requestBody/content/application~1json/schema/properties/emailAddress'
                organizationId:
                  type: string
                  description: Optional organization ID to bypass email-domain lookup (e.g. for dedicated client login pages).
      responses:
        '200':
          description: Returns array of redirect URLs if they exist
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  description: Array of user organization redirect URLs for single sign on, or empty array.
                  properties:
                    redirectUrl:
                      type: string
                      description: URL to organizations single sign on.
                    organizationName:
                      type: string
                      description: Name of the organization
        default:
          $ref: '#/paths/~1v1~1routes/get/responses/404'
  /v1/zendesk-sso:
    get:
      x-exegesis-controller: Authentication
      summary: Check user and returns Zendesk KH Auth token
      operationId: zendeskSSOToken
      tags:
      - Authentication
      responses:
        '200':
          description: Returns token
          content:
            application/json:
              schema:
                type: object
                properties:
                  token:
                    type: string
        default:
          $ref: '#/paths/~1v1~1routes/get/responses/404'
  /v1/sso-multi-organizations:
    post:
      x-exegesis-controller: Authentication
      summary: Get list of related organizations that share an ssoEmailSuffix.
      operationId: ssoMultiOrganizations
      tags:
      - Authentication
      security: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - emailAddress
              properties:
                emailAddress:
                  $ref: '#/paths/~1v1~1reset-password/post/requestBody/content/application~1json/schema/properties/emailAddress'
      responses:
        '200':
          description: Returns array of organizations matching the provided ssoEmailSuffix if they exist
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  description: Array of organizations that share an ssoEmailSuffix.
                  properties:
                    id:
                      type: string
                      description: Organization's ID
                    name:
                      type: string
                      description: Name of the organization
        default:
          $ref: '#/paths/~1v1~1routes/get/responses/404'
  /v1/assert/{organizationId}:
    parameters:
    - name: organizationId
      in: path
      required: true
      description: 'Organization id for SAML ACS. For FedEx **customer (child org)** SSO, this is the same value as the integration
        doc’s `userCheck` segment (child org id in OneRail). FedEx IdP has no org concept; OneRail still routes the POST using
        the child org id encoded in this path.

        '
      schema:
        type: string
    post:
      x-exegesis-controller: Authentication
      summary: Post assert SAML data to OneRail
      operationId: assert
      tags:
      - Authentication
      security: []
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: Redirect
        default:
          $ref: '#/paths/~1v1~1routes/get/responses/404'
  /v1/saml/{organizationId}/metadata.xml:
    parameters:
    - name: organizationId
      in: path
      required: true
      schema:
        type: string
    get:
      x-exegesis-controller: Authentication
      summary: Get organization saml metadata.xml
      operationId: getOrganizationSaml
      tags:
      - Authentication
      security: []
      responses:
        '200':
          description: SAML XML
        default:
          $ref: '#/paths/~1v1~1routes/get/responses/404'
  /v1/organizations:
    get:
      x-exegesis-controller: Organization
      summary: Get all organizations user has access to
      operationId: getAllOrganizations
      tags:
      - Organization
      parameters:
      - name: name
        in: query
        description: Partial Organization name
        required: false
        schema:
          type: string
          minLength: 3
      - name: active
        in: query
        required: false
        description: Filter by active status
        schema:
          type: boolean
      - name: type
        in: query
        required: false
        description: Shipper or LP
        schema:
          type: string
          enum:
          - LP
          - SHIPPER
      - name: offset
        in: query
        description: Number of items to skip before returning the results.
        required: true
        schema:
          type: integer
          minimum: 0
          default: 0
      - name: limit
        in: query
        description: Maximum number of items to return.
        required: true
        schema:
          type: integer
          minimum: 1
          default: 20
      - name: sortby
        in: query
        description: Field to sort by
        required: false
        schema:
          type: string
      - name: order
        in: query
        description: Sort order
        required: false
        schema:
          type: string
          default: DESC
          enum:
          - ASC
          - DESC
      responses:
        '200':
          description: Organization Records
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/paths/~1v1~1api-auths/get/responses/200/content/application~1json/schema/allOf/0'
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        $ref: '#/paths/~1v1~1organization~1%7BorganizationId%7D/get/responses/200/content/application~1json/schema'
        default:
          $ref: '#/paths/~1v1~1routes/get/responses/404'
  /v2/organizations:
    get:
      x-exegesis-controller: Organization
      summary: Get all organizations user has access to, with reduced payload
      operationId: getAllV2
      tags:
      - Organization
      parameters:
      - name: offset
        in: query
        description: Number of items to skip before returning the results.
        required: true
        schema:
          type: integer
          minimum: 0
          default: 0
      - name: limit
        in: query
        description: Maximum number of items to return.
        required: true
        schema:
          type: integer
          minimum: 1
          default: 20
      - name: sortby
        in: query
        description: Field to sort by
        required: false
        schema:
          type: string
      - name: order
        in: query
        description: Sort order
        required: false
        schema:
          type: string
          default: DESC
          enum:
          - ASC
          - DESC
      - name: search
        in: query
        description: Search term
        required: false
        schema:
          type: string
      - name: active
        in: query
        description: Filter by activeness status (optional)
        required: false
        schema:
          type: boolean
      responses:
        '200':
          description: Organization Records
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/paths/~1v1~1api-auths/get/responses/200/content/application~1json/schema/allOf/0'
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                        description: Organization
                        properties:
                          id:
                            type: string
                            format: uuid
                          name:
                            type: string
                          active:
                            type: boolean
                          organizationTypes:
                            type: array
                            items:
                              type: string
                          organizationTree:
                            $ref: '#/paths/~1v1~1organization/post/responses/200/content/application~1json/schema/properties/organizationTree'
        default:
          $ref: '#/paths/~1v1~1routes/get/responses/404'
  /v3/organizations:
    post:
      x-exegesis-controller: Organization
      summary: Get all organizations user has access to, with reduced payload
      operationId: listOrganizationsV3
      tags:
      - Organization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: Query parameters for listing organizations
              required:
              - offset
              - limit
              properties:
                offset:
                  type: integer
                  minimum: 0
                  default: 0
                  description: Number of items to skip before returning the results.
                limit:
                  type: integer
                  minimum: 1
                  default: 20
                  description: Maximum number of items to return.
                sortby:
                  type: string
                  description: Field to sort by
                order:
                  type: string
                  default: DESC
                  enum:
                  - ASC
                  - DESC
                  description: Sort order
                search:
                  type: string
                  description: Search term
                active:
                  type: boolean
                  description: Filter by activeness status (optional)
                organizationIds:
                  type: array
                  items:
                    type: string
                    format: uuid
                  description: 'Inclusive allowlist of organization IDs to return. Results are still constrained by the caller’s
                    access permissions.

                    '
                organizationTypes:
                  type: array
                  items:
                    type: string
                    format: uuid
                  description: Filter by organization types IDs (optional)
                parentOrganization:
                  type: string
                  format: uuid
                  description: Filter by parent organization ID (optional)
                dateCreated:
                  type: object
                  properties:
                    from:
                      type: string
                      format: date
                      description: Start date (YYYY-MM-DD)
                    to:
                      type: string
                      format: date
                      description: End date (YYYY-MM-DD)
                  description: Filter by creation date range (optional)
                onboardingStatus:
                  type: string
                  enum:
                  - discovery
                  - in progress
                  - completed
                  description: Filter by onboarding status (optional)
      responses:
        '200':
          description: Organization Records
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/paths/~1v1~1api-auths/get/responses/200/content/application~1json/schema/allOf/0'
                - type: object
                  additionalProperties: false
                  required:
                  - data
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                        description: Organization (V3 reduced payload)
                        additionalProperties: false
                        required:
                        - id
                        - name
                        - active
                        - organizationTypes
                        properties:
                          id:
                            type: string
                            format: uuid
                          name:
                            type: string
                          active:
                            type: boolean
                          createdAt:
                            type: string
                            format: date-time
                          onboardingStatus:
                            type: string
                            nullable: true
                          organizationTypes:
                            type: array
                            nullable: true
                            items:
                              type: string
                          organizationTree:
                            type: object
                            description: Organization tree summary (V3)
                            additionalProperties: false
                            required:
                            - id
                            properties:
                              id:
                                type: string
                                format: uuid
                              name:
                                type: string
                                description: Organization name (tree context)
                              parentOrganization:
                                $ref: '#/paths/~1v3~1organizations/post/responses/200/content/application~1json/schema/allOf/1/properties/data/items/properties/organizationTree/properties/rootOrganization'
                              rootOrganization:
                                type: object
                                description: Parent organization summary (V3)
                                additionalProperties: false
                                required:
                                - id
                                properties:
                                  id:
                                    type: string
                                    format: uuid
                                  name:
                                    type: string
                                    nullable: true
                                    description: Parent organization name (may be null if not resolved)
        default:
          $ref: '#/paths/~1v1~1routes/get/responses/404'
  /v1/organizations/users:
    post:
      x-exegesis-controller: Organization
      summary: Search Users in different organizations
      operationId: searchUsers
      tags:
      - Organization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - offset
              - limit
              properties:
                offset:
                  description: Number of items to skip before returning the results.
                  type: integer
                  minimum: 0
                  example: 0
                limit:
                  description: Maximum number of items to return.
                  type: integer
                  minimum: 1
                  example: 20
                sortby:
                  description: Field to sort by
                  type: string
                order:
                  description: Sort order
                  type: string
                  default: DESC
                  enum:
                  - ASC
                  - DESC
                search:
                  description: String to search
                  type: string
                organizationId:
                  description: organizationId to check permission for
                  type: string
                  format: uuid
                  nullable: true
                permission:
                  description: Restrict results to users holding this permission in the organization.
                  type: string
                  nullable: true
                filter:
                  description: Filters to apply
                  type: array
                  items:
                    type: object
                    required:
                    - field
                    - value
                    properties:
                      field:
                        type: string
                        enum:
                        - emailAddress
                        - firstName
                        - lastName
                      value:
                        type: string
      responses:
        '200':
          description: User Records
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/paths/~1v1~1api-auths/get/responses/200/content/application~1json/schema/allOf/0'
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        type: object
                        description: User
                        required:
                        - emailAddress
                        - firstName
                        - lastName
                        - organizationId
                        properties:
                          id:
                            type: string
                          createdById:
                            type: string
                          emailAddress:
                            type: string
                            format: email
                          firstName:
                            type: string
                          lastName:
                            type: string
                          phoneNumber:
                            type: string
                            nullable: true
                          active:
                            type: boolean
                          driver:
                            $ref: '#/paths/~1v1~1login/post/responses/200/content/application~1json/schema/allOf/1/properties/driver'
                          title:
                            type: string
                            nullable: true
                          organizationId:
                            type: string
                            format: uuid
                          roles:
                            type: array
     

# --- truncated at 32 KB (1016 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/onerail/refs/heads/main/openapi/onerail-operations-api-openapi.yml