Emerge Carrier API

REST API for Capacity and Integration Providers (carriers, brokers and their TMS vendors) working with shippers on the Emerge platform. Providers receive Rate Request and Tender Request events by webhook, then respond with a quote (creating an Option for the shipper) or a tender response. Authenticates with a client id / client secret credential pair exchanged for a bearer token. Part of the Capacity Link program.

OpenAPI Specification

emerge-carrier-api-openapi.yml Raw ↑
openapi: 3.0.0
servers:
- url: https://api.emergemarket.io/v2
  description: Primary production endpoint
- url: https://demo-api.emergemarket.dev/v2
  description: Testing sandbox endpoint
info:
  version: 2.0.0
  title: Emerge Carrier API
  description: "### \nThe Emerge carrier API provides integrated carrier (Provider) developers with access to the Emerge platform.\n\
    \nThe current version of the API is v1.0.0 This API will evolve as the features in Emerge's product evolve.\n\n# Get Started\n\
    \nWelcome to Emerge's REST API Carrier Documentation. \nOur APIs allow Capacity and Integration Providers to easily interact\
    \ with Shippers utilizing Emerge's Platform. \n\nIf you are interested in implementing a Carrier API integration\nplease\
    \ submit a request [here](https://emergetech.zendesk.com/hc/en-us/requests/new?ticket_form_id=11470751569179) \n\nAll\
    \ production level API requests are made to:\n<br />`https://api.emergemarket.io`\n\n\nThe testing sandbox is available\
    \ during development and for testing:\n<br />`https://demo-api.emergemarket.dev`\n\n## Compatibility Policy\n\nEmerge\
    \ APIs are versioned using a prefix in the endpoint URL. Within an API version, we only make backward-compatible changes.\
    \ This mean that when a provider integrates with our REST API, the API will continue to work until the version is deprecated.\
    \ If we have to create a change that is not compatible with the current version, a new version will be created.\n\n###\
    \ Non-Breaking Changes\n\n* Adding additional optional fields on the API request.\n* Adding additional fields on the API\
    \ response.\n* Adding an HTTP method to an API.\n* Adding optional headers.\n* Adding additional accepted enumerated values.\n\
    * Changing Error Response descriptions.\n* Added Rate Limits.\n\n### Breaking Changes\n\n* Removing or renaming an API\
    \ method or endpoint.\n* Removing or renaming existing API request or response fields.\n* Removing or renaming enumerated\
    \ values.\n* Changing the Error Response values.\n\n### Deprecation Policy\n\n* Emerge will continue to support deprecated\
    \ APIs for 1 year.\n* Documentation will also be updated and integrating providers will be notified via email when a version\
    \ or endpoint is being deprecated.\n\n# Workflows\nOur Carrier APIs enable Capacity Providers more flexibility when working\
    \ with Shippers using Emerge's Platform. \nMore workflows will become available in the future as we continue growing our\
    \ Carrier API suite.\n\nWhile integrating with Emerge, it is helpful to be aware of our nomenclature. \nOur Shippers create\
    \ \"Opportunities,\" defined as shipments they are accepting quotes for. \nWhen we request a rate, you respond with a\
    \ \"Quote\" which is composed of the rate and duration details. \nOnce a Quote is received from our Capacity Providers,\
    \ it becomes an \"Option\" for our Shippers to review. \nYou will see these terms throughout our documentation.\n\n##\
    \ Rate Request to Quote Response\nIn this workflow, Emerge automatically sends Rate Requests to our Capacity Providers\
    \ on behalf of our Shippers. \nThis workflow makes it easy for Capacity Providers to rate Opportunities while maintaining\
    \ existing processes. The steps of this workflow include:\n\n1. Receive a Rate Request Event via Webhook.<br />\na. Rate\
    \ Requests contain Shipper identifying information in the relationship_identifiers object. These values are provided by\
    \ the Capacity Provider during Capacity Link onboarding to enable matching in the Provider's application.<br />\n\n2.\
    \ Review Opportunity details and determine whether to provide a quote.<br />\n\n3. Send the Rate or provide the Error\
    \ Reason for declining to rate via the Quote Response Endpoint.<br />\na. A Quote Response must provide the event_id sourced\
    \ from the Rate Request Event.<br />\nb. Providers can respond with either a Rate or an Error to let the shipper know\
    \ why they are not providing a rate.<br />\nc. Providers responding with a rate can include their Quote ID in the provider_reference\
    \ field.<br />\n\n4. The Rate will be available for Review by the Shipper.\n"
  x-logo:
    url: data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMTUycHgiIGhlaWdodD0iODBweCIgdmlld0JveD0iMCAwIDE1MiA4MCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDx0aXRsZT5lbWVyZ2UtbG9nbzwvdGl0bGU+CiAgICA8ZyBpZD0iZW1lcmdlLWxvZ28iIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJFbWVyZ2UiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI0LjAwMDAwMCwgMjQuMDAwMDAwKSIgZmlsbD0iIzBENDdBMSIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPHBhdGggZD0iTTgwLjMzNzc4ODMsNS44Mzc1NTI0NCBDODIuODk5NzUyLDUuODM3NTUyNDQgODUuNDI2MDA5Miw2LjY5MTgwMTcgODcuODgxMjY2MSw4LjAwODg5NDA2IEw4NC40NjUzNjAzLDI1LjU5Mjg1NTIgQzgzLjcxODEyNjcsMjkuNTA4Mjc5OSA4MC45MDcwMzg4LDMyIDc2LjQ5NDkxMjMsMzIgTDcxLjAxNTE0MzcsMzIgTDcxLjQwNjU0NjIsMjcuNzI4NjE4NiBMNzcuMzQ4ODUyNCwyNy43Mjg2MTg2IEM3OC41NTg2MjY1LDI3LjcyODYxODYgNzkuNDEyNTY5OSwyNi44MDMwNjc0IDc5LjY2MTY5MiwyNS41OTI4NTkyIEw4MC4wODg2NjQyLDIzLjMxNDc3MDUgQzc4LjkxMTI1MDgsMjQuMzAwNzM4MiA3Ny40MjU0NDQyLDI0Ljg0MjM3MDMgNzUuODg5OTU1MSwyNC44NDUzNTcyIEM3MS44NjkwOTQxLDI0Ljg0NTM1NzIgNjkuOTQ3NjQ4OSwyMS4zNTcwNTgyIDcwLjczMDQ1ODEsMTcuMTkyNDE5OSBMNzEuMzM1NDEzMSwxNC4xNjY4MjcgQzcyLjM2NzM0MDMsOS4wMDU0NzQ4NSA3NS4yODQ5OTE5LDUuODM3NTUyNDQgODAuMzM3Nzg4Myw1LjgzNzU1MjQ0IFogTTUzLjAwOTk4NDEsNS44Mzc1NTI0NCBDNTYuNzgxNzIzLDUuODM3NTUyNDQgNTkuMzA3OTgwMSw4LjE1MTIyMzU4IDU5LjMwNzk4MDEsMTEuMTQxMjM4MSBDNTkuMzA3OTgwMSwxNC42NjUxMTk0IDU2LjI0NzkwNTIsMTcuMjI4MDA0MyA1MC43MzI3MTIxLDE3LjU4Mzk2NTIgTDQ3Ljk5Mjc2MzQsMTcuNzYxODc3MSBDNDcuNjcyNjM3MSwxOS4zOTkzNDggNDguMjA2MzE4LDIxLjEwNzg0NjUgNTAuNjk3MTQyNSwyMS4xMDc4NDY1IEM1Mi42ODk3MjA4LDIxLjEwNzg0NjUgNTQuNzUzNDM4MSwyMC4zOTU5MTY2IDU2LjQ2MTQ1OTcsMTkuNzkwODg5MiBMNTYuNzgxNzIzLDIzLjgxMzA2MDkgQzU0LjUwNDQ1MzIsMjQuNjY3NDQ3MyA1Mi4zMzM4ODk5LDI1LjMwODA2NTIgNTAuMDIxMDUwMywyNS4zMDgwNjUyIEM0NS4yNTI5NTM3LDI1LjMwODA2NTIgNDIuMDUwNjAyMywyMi40NjA1MjEzIDQzLjE4OTIzODMsMTYuODM2NDYxMSBMNDMuNjg3MzQ3NiwxNC4zNDQ3Mzg5IEM0NC43OTA0MTQsOC44OTg3Mjc3MiA0Ny43NzkzNDc5LDUuODM3NTUyNDQgNTMuMDA5OTg0MSw1LjgzNzU1MjQ0IFogTTk3LjcwMjAwNCw1LjgzNzU1MjQ0IEMxMDEuNDczNzQzLDUuODM3NTUyNDQgMTA0LDguMTUxMjIzNTggMTA0LDExLjE0MTIzODEgQzEwNCwxNC42NjUxMTk0IDEwMC45Mzk5MjUsMTcuMjI4MDA0MyA5NS40MjQ3MzIsMTcuNTgzOTY1MiBMOTIuNjg0NzgzMiwxNy43NjE4NzcxIEM5Mi4zNjQ2NTY5LDE5LjM5OTM0OCA5Mi44OTgzMzc4LDIxLjEwNzg0NjUgOTUuMzg5MTYyNCwyMS4xMDc4NDY1IEM5Ny4zODE3NDA1LDIxLjEwNzg0NjUgOTkuNDQ1NDU4LDIwLjM5NTkxNjYgMTAxLjE1MzQ4LDE5Ljc5MDg4OTIgTDEwMS40NzM3NDMsMjMuODEzMDYwOSBDOTkuMTk2NDcyOSwyNC42Njc0NDczIDk3LjAyNTkwOTYsMjUuMzA4MDY1MiA5NC43MTMwNzAxLDI1LjMwODA2NTIgQzg5Ljk0NDk3MzUsMjUuMzA4MDY1MiA4Ni43NDI2MjIxLDIyLjQ2MDUyMTMgODcuODgxMjU4MSwxNi44MzY0NjExIEw4OC4zNzkzNjc0LDE0LjM0NDczODkgQzg5LjQ4MjQzMzksOC44OTg3Mjc3MiA5Mi40NzEzNjc2LDUuODM3NTUyNDQgOTcuNzAyMDA0LDUuODM3NTUyNDQgWiBNMTguMTM5MTIxMywwIEwxNy4zMjA3NDg4LDQuMjcxMzc3MzcgTDEwLjYzMTM1NjIsNC4yNzEzNzczNyBDOC4yNDcyNDAzOCw0LjI3MTM3NzM3IDcuNjA2ODUwNzIsNS42NTk0OTk0MSA3LjI4NjU4OTM4LDcuMjYxMzg3OTEgTDYuNzUyNzY3NCw5Ljk2NjYwODM2IEwxNS4xMTQ2MTgsOS45NjY2MDgzNiBMMTQuMzMxODE4OSwxNC4yMDI0MDk0IEw1LjkzNDM5NDc1LDE0LjIwMjQwOTQgTDUuMjU4MzAwNDcsMTcuNjE5NTQzNiBDNC45MzgxNzQxNiwxOS4yNTY4Nzc0IDUuMDQ0ODgyOTMsMjAuNTczOTcxOCA3LjQyODg2MTY4LDIwLjU3Mzk3MTggTDE0LjI2MDY3MTcsMjAuNTczOTcxOCBMMTMuNjIwMTQ0OSwyMy45MTk5NDExIEMxMy41NTgzOTA3LDI0LjQ1ODc4ODcgMTMuMDk0NzQ4NSwyNC44NjA3NzIzIDEyLjU1Mjc4NTIsMjQuODQ1MzU1MSBMNi41NzQ5MTk0NiwyNC44NDUzNTUxIEMxLjQ4NjY5ODU5LDI0Ljg0NTM1NTEgLTAuNjQ4Mjk1MDUsMjIuMTQwMTQwNyAwLjE3MDA3NzU5NCwxOC4wNDY2NjkyIEwyLjM0MDY0MDgzLDYuODM0MjY4MzEgQzMuMTU5MDEzNDcsMi43MDUyMTQ0MSA2LjI1NDY1NjEsMCAxMS4zNzg1ODM2LDAgTDE4LjEzOTEyMTMsMCBaIE0zNy43ODA3NTIsNS44Mzc1NTQ0NSBDNDEuNTE2OTIxNSw1LjgzNzU1NDQ1IDQzLjE4OTIzNjMsOC4xNTEyMjU2IDQyLjQwNjQzMzIsMTIuMTczNTM0NCBMNDAuMTI5MTYzMiwyMy45MTk5NDExIEM0MC4wNTA4MzI0LDI0LjQ2NDQ3ODkgMzkuNTc1NzYxOCwyNC44NjMwMzc3IDM5LjAyNjA5NjgsMjQuODQ1MzU1MSBMMzUuMDc2NTE4LDI0Ljg0NTM1NTEgTDM3LjQyNDkyNzIsMTIuNzQyOTg3NSBDMzcuODE2MzM3OCwxMC43NDk2OTI5IDM3LjMxODIxODQsMTAuMDM3NzczMSAzNS45MzA0NjAzLDEwLjAzNzc3MzEgQzM0Ljc5MTgyNDMsMTAuMDM3NzczMSAzMy42NTMxOTAzLDEwLjY0Mjk0NTcgMzIuNTg1NjkzNSwxMS41MzI3Nzc0IEMzMi41MTQ1NDYzLDEyLjA2NjY1MDIgMzIuNDQzNDE1MSwxMi42MzYyNDA0IDMyLjMzNjcwNjQsMTMuMjA1NjkzNSBMMzAuMDk1MDA2LDI0Ljg0NTM1NTEgTDI1LjIyMDE5NDYsMjQuODQ1MzU1MSBMMjcuNTY4NjAzOCwxMi43NDI5ODc1IEMyNy44ODg4NjcxLDExLjA3MDA3MTQgMjcuNzQ2NTg4NywxMC4wMzc3NzMxIDI2LjQ2NTUzNzQsMTAuMDM3NzczMSBDMjUuMjkxMzMxOCwxMC4wMzc3NzMxIDIzLjcyNTcyNTYsMTEuMTQxMjM2MSAyMi42OTM3OTgzLDEyLjMxNTg2MTkgTDIwLjI3NDI1LDI0Ljg0NTM1NTEgTDE1LjM5OTQ0NjcsMjQuODQ1MzU1MSBMMTguOTkzMjAwNiw2LjMwMDI2MDQ2IEwyMy4wNDk2MzE0LDYuMzAwMjYwNDYgTDIyLjk0MjkyMjYsOC4yMjIzOTAzNiBDMjQuMjk0OTc2MSw2Ljg2OTg1MDY5IDI1Ljk2NzQyOCw1LjgzNzU1NDQ1IDI3Ljk2MDAwNDMsNS44Mzc1NTQ0NSBDMzAuMjM3Mjc0Miw1LjgzNzU1NDQ1IDMxLjY2MDYwNCw2LjU4NTA1NjU4IDMyLjI2NTQyMiw4LjE4NjgwNzk4IEMzMy43NTk4ODksNi45MDU0MzMwNyAzNS43MTcwMzQ3LDUuODM3NTU0NDUgMzcuNzgwNzUyLDUuODM3NTU0NDUgWiBNNzAuODcyNTg3Miw1Ljg3MzEzNDgxIEM3MS40NjMxMzk0LDUuODY1OTcyODggNzIuMDUxMjU5LDUuOTUwMDMwODYgNzIuNjE2MTc4NCw2LjEyMjM0MDUgTDcxLjUxMzExOCwxMC4yNTE0MDQ1IEM3MS4wNzAxMjcsMTAuMTQ3NDgwMSA3MC42MTU4NDMzLDEwLjA5OTYxNjggNzAuMTYwOTI5MywxMC4xMDg5Mzc5IEM2OC42NjY0NjI0LDEwLjEwODkzNzkgNjYuOTk0MTQ1NiwxMS40NjE2MTI2IDY1Ljk5Nzc4OTksMTIuMzg3MDI2NiBMNjMuNTc4MjQxNiwyNC44NDUzNTUxIEw1OC43MDM0MzYzLDI0Ljg0NTM1NTEgTDYyLjI5NzMyNTIsNi4zMDAyNjA0NiBMNjYuMzE4MDUxMiw2LjMwMDI2MDQ2IEw2Ni4yODI0ODE3LDguNTQyNzY2ODQgQzY3LjUyNzgyNjQsNy4wNDc3NjI1OCA2OS4xNjQ3MDg4LDUuODczMTM0ODEgNzAuODcyNTg3Miw1Ljg3MzEzNDgxIFogTTgwLjIzMDkzODUsMTAuMDM3NzczMSBDNzcuOTE4MDk4OSwxMC4wMzc3NzMxIDc2Ljc3OTQ2MjksMTEuNTY4MzU5OCA3Ni4xNzQ2NDI4LDE0LjU5Mzk1MjcgTDc1Ljc0NzY3MDcsMTYuODcyMDQxNSBDNzUuMjQ5NDI0MywxOS4zOTkzNDQgNzUuNzgzMjQwMywyMC42NDUxMzY1IDc3LjE3MDg2MzQsMjAuNjQ1MTM2NSBDNzguNDUxOTE2OCwyMC42NDUxMzY1IDc5LjY5NzI1NzUsMTkuNzkwODg3MiA4MC45NzgxNzE5LDE4LjMzMTQ2NTMgTDgyLjUwODIwODUsMTAuNTAwNDgxMSBDODEuNzgzMDU3MywxMC4yMTA2ODI2IDgxLjAxMTY0NjksMTAuMDUzOTQzMiA4MC4yMzA5Mzg1LDEwLjAzNzc3MzEgWiBNNTIuNTQ3MzA3NSwxMC4wMzc3NzMxIEM0OS44MDc0OTU3LDEwLjAzNzc3MzEgNDkuMDI0NjkyNywxMi4zMTU4NjE5IDQ4LjYzMzI5MDEsMTQuMzgwMzIzMyBMNTAuNjI1ODY4NCwxNC4yMzc5OTE4IEM1My4yNTg5NzEzLDE0LjA2MDA3OTkgNTQuNDY4NzQ2NCwxMi45OTIxOTkzIDU0LjQ2ODc0NjQsMTEuNjc1MTA2OSBDNTQuNDY4NzQ2NCwxMC42NDI5NDU3IDUzLjc1NzIxNzYsMTAuMDM3NzczMSA1Mi41NDczMDc1LDEwLjAzNzc3MzEgWiBNOTcuMjM5MzI3MiwxMC4wMzc3NzMxIEM5NC40OTk1MTU1LDEwLjAzNzc3MzEgOTMuNzE2NzEyNCwxMi4zMTU4NjE5IDkzLjMyNTMwOTksMTQuMzgwMzIzMyBMOTUuMzE3ODg4MiwxNC4yMzc5OTE4IEM5Ny45NTA5OTExLDE0LjA2MDA3OTkgOTkuMTYwNzY2MywxMi45OTIxOTkzIDk5LjE2MDc2NjMsMTEuNjc1MTA2OSBDOTkuMTYwNzY2MywxMC42NDI5NDU3IDk4LjQ0OTIzNzQsMTAuMDM3NzczMSA5Ny4yMzkzMjcyLDEwLjAzNzc3MzEgWiIgaWQ9IkxvZ28tRW1lcmdlIj48L3BhdGg+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4=
    altText: Emerge logo
tags:
- name: Rate Request Event
  description: "<h3>rate_request</h3>\nThis object contains Opportunity details used to create a rate by a Capacity Provider.\
    \ Once a Capacity Provider has received the rate request event, they can respond with a quote using the Quote Response\
    \ endpoint. If there is no response to the rate request within the time specified by the Integration Provider configuration,\
    \ a manual rate request will be made available in the Emerge Platform and an email requesting a rate is sent to the Capacity\
    \ Provider.\n <SchemaDefinition schemaRef=\"#/components/schemas/Rate_Request_Event\" />\n"
- name: Tender Request Event
  description: "<h3>tender_request</h3>\nThe object contains tender details used to respond by a Capacity Provider.\n <SchemaDefinition\
    \ schemaRef=\"#/components/schemas/Tender_Request_Event\" />\n"
x-tagGroups:
- name: Provider API
  tags:
  - Authentication
  - Options
  - Tender
- name: Webhook Events
  tags:
  - Rate Request Event
  - Tender Request Event
paths:
  /auth/login/client_credentials:
    post:
      tags:
      - Authentication
      summary: Gets access token for Integration Provider.
      security: []
      description: This method allows an Integration Provider to generate an access token from Emerge platform. A client credential
        pair, composed of a client id and a client secret, must be supplied in the request. The procured access token should
        be sent by the Integration Provider while calling other Carrier API endpoints.
      requestBody:
        description: Request body of an authentication attempt.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                client_id:
                  description: The identifier provided during onboarding and used for authentication.
                  type: string
                  example: eMF2mQNXue5BXjmUNX1pQ45grwrquuiQ
                client_secret:
                  description: The secret provided during onboarding and used for authentication.
                  type: string
                  example: 1gTmAOzPLqoE5HKxjWgFt8WnAEPu3MQjlNBrR94c1q4o7UTtGgRd1QGwCFzVPsWb
              required:
              - client_id
              - client_secret
      responses:
        '200':
          description: 200 | OK. A JSON object containing the access token and additional information.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/200_client_credential_authentication_response'
        '400':
          description: 400 | Bad Request. A bad request was made. Please try again
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400_badrequest_clientcredentials_response'
        '403':
          $ref: '#/components/responses/403'
  /options:
    post:
      tags:
      - Options
      summary: Respond to Quote
      security:
      - BearerAuth: []
      description: This method is used to respond a Rate Request. If a Quote is supplied, an Option is created inside of the
        Emerge Platform. If an error is sent, the reason the Provider did not quote is given to the Shipper.
      requestBody:
        description: Request model to submit the rates.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                rate_request_id:
                  description: The identifier for the rate request. This is provided by Emerge in the Rate Request Event.
                  type: string
                  example: 31e34816-f50d-4158-88b8-768715f628b2
                quote_details:
                  description: This object identifies all relevant quote details. This object is optional if the "error_messages"
                    object is in use.
                  type: object
                  properties:
                    provider_reference:
                      description: The rate identifier number for the Capacity Provider. Providers may expect this value to
                        be returned when the shipment is tendered.
                      type: string
                      example: a55097d0-76e3-427c-bc67-613dd0a2ded2
                    rate:
                      description: Identifies rate value details.
                      type: object
                      properties:
                        amount:
                          description: The rate amount.
                          type: integer
                          example: 100
                        currency:
                          description: Defines the currency of amount. Must be "USD".
                          type: string
                          example: USD
                        type:
                          description: Defines rate type. This value must match the requested rate type in the Rate Request
                            Event.
                          type: string
                          enum:
                          - LH_ONLY
                          - ALL_IN
                          example: LH_ONLY
                    expiration_date:
                      description: Defines when the quote expires. This is a date/time offset.
                      type: string
                      example: '2021-09-22T12:01:56.9726183+00:00'
                error_messages:
                  description: Identifies reasons for not providing a quote. This field is optional if the "quote_details"
                    object is in use.
                  type: array
                  items:
                    type: string
                    example: Unable to Quote due to ...
              required:
              - rate_request_id
      responses:
        '202':
          description: 202 | Accepted. Rates submitted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/200_postoptions_response'
        '400':
          description: 400 | Bad Request. A bad request was made. Please try again
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400_badrequest_postoptions_response'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
  /tenders/{shipment_id}/responses:
    post:
      tags:
      - Tender
      summary: Respond to Tender
      security:
      - BearerAuth: []
      description: This method is used to receive response for a Tender.
      requestBody:
        description: Request model to submit the response.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                event_id:
                  description: The identifier for the tender request. This is provided by Emerge in the Tender Request Event.
                  type: string
                  example: 40dbcdb1-272b-4ee3-8621-208b88fe0beb
                status:
                  description: Defines tender status.
                  type: string
                  enum:
                  - ACCEPT
                  - REJECT
                  example: ACCEPT
                rejection_reason:
                  description: Identifies reasons for rejecting a tender.
                  type: string
                  enum:
                  - NO_CAPACITY
                  - SHORT_LEAD_TIME
                  - PICKUP_APPOINTMENT_NOT_FEASIBLE
                  - DELIVERY_APPOINTMENT_NOT_FEASIBLE
                  - TRANSIT_TIME_NOT_FEASIBLE
                  - VOLUME_COMMITMENT_MET
                  example: NO_CAPACITY
                carrier_shipment_id:
                  description: Defines the crrier shipment id.
                  type: string
                  example: S111171611
              required:
              - event_id
              - status
      responses:
        '202':
          description: 202 | Accepted. Rates submitted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/200_postoptions_response'
        '400':
          description: 400 | Bad Request. A bad request was made. Please try again
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400_badrequest_posttender_response'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
components:
  schemas:
    stops_object:
      description: This object contains stop information for the quote.
      type: array
      items:
        type: object
        properties:
          sequence:
            description: The sequence of the stop.
            type: integer
            example: 1
          stop_type:
            description: The stop type.
            type: string
            enum:
            - ORIGIN
            - INTERMEDIATE
            - DESTINATION
            example: ORIGIN
          stop_action:
            description: The stop action type.
            type: string
            enum:
            - PICKUP
            - DROPOFF
            example: PICKUP
          loading_type:
            description: The loading type.
            type: string
            enum:
            - LIVE
            - DROP
            example: LIVE
          notes:
            description: The notes associated to the stop.
            type: string
            example: 3665 North Harbor Drive
          location:
            description: This object defines the location details for the stop.
            type: object
            properties:
              city:
                description: The city the stop is located.
                type: string
                example: San Diego
              state:
                description: The state the stop is located. This will be expressed in standard state abbreviations.
                type: string
                example: CA
              postal_code:
                description: The postal code the stop is located.
                type: string
                example: '92101'
              country_code:
                description: The country code the stop is located.
                type: string
                enum:
                - US
                - USA
                - CA
                - CAN
                example: US
          appointment:
            description: This object defines appointment related information.
            type: object
            properties:
              type:
                description: The appointment type.
                type: string
                enum:
                - FCFS
                - APPT_NEEDED
                - APPT_SCHEDULED
                example: FCFS
              earliest:
                description: The earliest date/time the shipment could arrive at the stop. This is a date/time offset.
                type: string
                example: '2021-09-22T00:00:00-08:00'
              latest:
                description: The latest date/time the shipment could arrive at the stop. This is a date/time offset.
                type: string
                example: '2021-09-22T00:00:00-08:00'
    special_requirements_object:
      description: This object contains any special requirements associated to the quote.
      type: array
      items:
        type: object
        properties:
          code:
            description: The special requirement codes associated to the quote.
            type: string
            enum:
            - HAZMAT
            - TEAM_DRIVERS
            - PRE_COOL
            - SMOKE_TARPS
            - STANDARD_TARPS
            example: TEAM_DRIVERS
    commodities_object:
      description: This object defines the commodities that are a part of this quote.
      type: array
      items:
        type: object
        properties:
          description:
            description: The description of the commodity.
            type: string
            example: FAK
          weight:
            description: The weight of the commodity expressed in pounds.
            type: integer
            example: 100
          unit_type:
            description: The type of unit a commodity is moved on.
            type: string
            enum:
            - OTHER
            - PALLET
            - BOX
            - CRATE
            - BAG
            - COILS
            - DRUMS
            - REELS
            - ROLLS
            - TUBES_OR_PIPES
            - SLIPSHEETS
            - BALE
            - BUCKET
            - BUNDLE
            - CAN
            - CARTON
            - CASE
            - CYLINDER
            - PAIL
            - PIECES
            - SKID
            example: PALLET
    references_object:
      description: This object contains reference number information for the quote.
      type: array
      items:
        type: object
        properties:
          type:
            description: The type of reference number.
            type: string
            enum:
            - OTHER
            - CUSTOMER
            - APPOINTMENT
            - BOL
            - DELIVERY
            - PICKUP
            - PICKUP_CONFIRMATION
            - PO
            - PRO
            - TRAILER
            example: CUSTOMER
          value:
            description: The reference number value.
            type: string
            example: CustRef123
    tender_stops_object:
      description: This object contains stop information for the shipment.
      type: array
      items:
        type: object
        properties:
          sequence:
            description: The sequence of the stop.
            type: integer
            example: 1
          stop_type:
            description: The stop type.
            type: string
            enum:
            - ORIGIN
            - INTERMEDIATE
            - DESTINATION
            example: ORIGIN
          stop_action:
            description: The stop action type.
            type: string
            enum:
            - PICKUP
            - DROPOFF
            example: PICKUP
          loading_type:
            description: The loading type.
            type: string
            enum:
            - LIVE
            - DROP
            example: LIVE
          notes:
            description: The notes associated to the stop.
            type: string
            example: 3665 North Harbor Drive
          location:
            description: This object defines the location details for the stop.
            type: object
            properties:
              name:
                description: The name of the location.
                type: string
                example: Target
              location_code:
                description: The location code associated to the stop.
                type: string
                example: '12212'
              address1:
                description: The address1 the stop is located.
                type: string
                example: N park ln
              address2:
                description: The address2 the stop is located.
                type: string
                example: corner 4th
              city:
                description: The city the stop is located.
                type: string
                example: San Diego
              state:
                description: The state the stop is located. This will be expressed in standard state abbreviations.
                type: string
                example: CA
              postal_code:
                description: The postal code the stop is located.
                type: string
                example: '92101'
              country_code:
                description: The country code the stop is located.
                type: string
                enum:
                - US
                - USA
                - CA
                - CAN
                example: US
          appointment:
            description: This object defines appointment related information.
            type: object
            properties:
              type:
                description: The appointment type.
                type: string
                enum:
                - FCFS
                - APPT_NEEDED
                - APPT_SCHEDULED
                example: FCFS
              earliest:
                description: The earliest date/time the shipment could arrive at the stop. This is a date/time offset.
                type: string
                example: '2023-04-11T00:00:00-08:00'
              latest:
                description: The latest date/time the shipment could arrive at the stop. This is a date/time offset.
                type: string
                example: '2023-04-11T00:00:00-08:00'
          references:
            $ref: '#/components/schemas/tender_references_object'
          contact:
            $ref: '#/components/schemas/tender_stop_contact_object'
    tender_commodities_object:
      description: This object defines the commodities that are a part of this shipment.
      type: array
      items:
        type: object
        properties:
          description:
            description: The description of the commodity.
            type: string
            example: FAK
          weight:
            description: The weight of the commodity expressed in pounds.
            type: integer
            example: 100
          unit_type:
            description: The type of unit a commodity is moved on.
            type: string
            enum:
            - OTHER
            - PALLET
            - BOX
            - CRATE
            - BAG
            - COILS
            - DRUMS
            - REELS
            - ROLLS
            - TUBES_OR_PIPES
            - SLIPSHEETS
            - BALE
            - BUCKET
            - BUNDLE
            - CAN
            - CARTON
            - CASE
            - CYLINDER
            - PAIL
            - PIECES
            - SKID
            example: PALLET
          unit_count:
            description: The unit count of the commodity.
            type: integer
            example: 4
    tender_references_object:
      description: This object contains reference number information for the shipment.
      type: array
      items:
        type: object
        properties:
          type:
            description: The type of reference number.
            type: string
            enum:
            - OTHER
            - CUSTOMER
            - APPOINTMENT
            - BOL
            - DELIVERY
            - PICKUP
            - PICKUP_CONFIRMATION
            - PO
            - PRO
            - TRAILER
            example: CUSTOMER
          value:
            description: The reference number value.
            type: string
            example: CustRef123
    tender_stop_contact_object:
      description: The object that defines the stop's contact information.
      type: object
      properties:
        name:
          description: The contact name for the person at the stop.
          type: string
          example: Anmol
        contact_items:
          description: The object that defines how to contact the person.
          type: array
          items:
            type: object
            properties:
              key:
                description: The contact type.
                type: string
                enum:
                - EMAIL
                - PHONE
                example: EMAIL
              value:
                description: The contact type value.
                type: string
                example: example@abc.com
    200_postoptions_response:
      description: 202 | Accepted.
      type: object
      properties:
        error:
          $ref: '#/components/schemas/errorcode_zero'
    400_badrequest_postoptions_response:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              description: HTTP code
              type: integer
              example: 400
            detailed_errors:
              description: Error messages
              type: array
              items:
                type: object
                properties:
                  key:
                    type: integer
                    example: amount
                  value:
                    type: string
                    example: Must have at least one reason in case unable to provide rate..
            messages:
              type: array
              items:
                type: string
                example: Validation failed.
    400_badrequest_posttender_response:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              description: HTTP code
              type: integer
              example: 400
            detailed_errors:
              description: Error messages
              type: array
              items:
                type: object
                properties:
                  key:
                    type: string
                    example: status
                  value:
                    type: string
                    example: Error converting value to type 'Emerge.Atom.Carrier.Integrations.Contracts.Enums.TenderResponseStatus'.
            messages:
              type: array
              items:
                type: string
                example: Validation failed.
    200_client_credential_authentication_response:
      type: object
      properties:
        response:
          type: object
          properties:
            token:
              description: The access

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