{
  "swagger": "2.0",
  "info": {
    "title": "Sonar API",
    "description": "Welcome to the Sonar API Explorer! We currently have a global limit of 100 requests per minute, but each endpoint may have different limits.Best practice is to always check the response headers for the exact limitations on each endpoint. Please review our Help page for more information or feel free to contact us anytime.",
    "termsOfService": "https://www.gosonar.com/terms-of-use",
    "contact": {
      "name": "Sonar",
      "url": "http://www.gosonar.com",
      "email": "apisupport@gosonar.com"
    },
    "version": "1.0"
  },
  "paths": {
    "/Credential/authenticate": {
      "post": {
        "tags": [
          "Authenticate"
        ],
        "summary": "Authenticates Valid User",
        "description": "<p style=\"text-indent: 2em\"> This will provide an Authentication Token for accessing the database. This token will be appended to all data calls in the form \"Authorization : Bearer \" + token.\n             The generated token is currently valid for 365 days. When it expires simply re-login and you will be given another token. Please contact Sales if the token is somehow stolen or compromised in some way.\n             In the event you upgrade your account or otherwise make changes that are not being reflected, getting a new token will also refresh your credential information. </p>",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "This is a User Credential Object, which stores the User's information, including username and password.",
            "schema": {
              "$ref": "#/definitions/UserCredentials"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "User Authentication Success: Authentication Token Given"
          },
          "400": {
            "description": "User Authentication Failure: Incorrect Login Information"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/coverage_guide/org/loads": {
      "post": {
        "tags": [
          "CoverageGuideConnect"
        ],
        "summary": "Add or update loads for Coverage Guide Connect",
        "description": "<p>\n            This endpoint allows permissioned users to send data programmatically to SONAR for Coverage Guide analysis.\n            Data will be validated, enriched with market intelligence, and displayed in the Coverage Guide UI.\n            </p>\n<p>\n  <strong>IMPORTANT: Currently supports domestic USA lanes only.</strong> All origin and destination locations must be within the United States.\n            International lane support may be added in future releases.\n            </p>\n<p>\n            For more information about getting access to this endpoint, please reach out to our Customer Success team (cs@gosonar.com).\n            </p>\n<p>\n            This endpoint handles the following input fields:\n            </p>\n<ul>\n  <li>load_id: Unique identifier for the load, required</li>\n  <li>origin_zip: Origin zip code (must be at least 3 characters), required</li>\n  <li>destination_zip: Destination zip code (must be at least 3 characters), required</li>\n  <li>equipment_type: Equipment type (VAN, REEFER, or FLATBED), required</li>\n  <li>segment: Segment identifier for grouping lanes, optional</li>\n  <li>consignee_name: Consignee name, required</li>\n  <li>input_miles: Distance in miles, optional</li>\n  <li>my_rate: Customer's rate in dollars, optional</li>\n  <li>order_tender_datetime: When the order was tendered, required</li>\n  <li>scheduled_pickup_datetime: Scheduled pickup date/time, required</li>\n  <li>scheduled_delivery_datetime: Scheduled delivery date/time, required</li>\n  <li>cargo_description: Description of cargo, optional</li>\n  <li>number_of_pickups: Number of pickup stops, optional</li>\n  <li>number_of_drops: Number of delivery stops, optional</li>\n  <li>number_of_stops: Total number of stops, optional</li>\n  <li>full_partial: Full or partial truckload, optional</li>\n  <li>equipment_detail: Detailed equipment specifications, optional</li>\n  <li>hazmat: Whether cargo is hazardous material, optional</li>\n</ul>\n<p>\n            The endpoint also accepts any additional custom fields you want to send - they will be stored for future use.\n            </p>\n<p>\n            Here are the output fields returned in a successful call:\n            </p>\n<ul>\n  <li>total_loads: Total number of loads in request</li>\n  <li>successful_loads: Number of loads successfully processed</li>\n  <li>failed_loads: Number of loads that failed validation/processing</li>\n  <li>errors: List of errors for failed loads (if any)</li>\n</ul>",
        "consumes": [
          "application/octet-stream",
          "application/json-patch+json",
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/CoverageGuideConnectUpsertApiRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/CoverageGuideConnectUpsertApiResponse"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/ProblemDetails"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/ProblemDetails"
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      },
      "delete": {
        "tags": [
          "CoverageGuideConnect"
        ],
        "summary": "Delete specific loads from Coverage Guide Connect",
        "description": "<p>\n            This endpoint allows permissioned users to delete specific loads by their load IDs.\n            Provide an array of load IDs in the request body to remove those loads from Coverage Guide.\n            </p>\n<p>\n            The request body must contain:\n            </p>\n<ul>\n  <li>load_ids: Array of load ID strings to delete, required (must contain at least one ID)</li>\n</ul>\n<p>\n            The response contains:\n            </p>\n<ul>\n  <li>success: Boolean indicating whether the deletion was successful</li>\n</ul>",
        "consumes": [
          "application/octet-stream",
          "application/json-patch+json",
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/CoverageGuideConnectDeleteLanesApiRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/CoverageGuideConnectDeleteLanesApiResponse"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/ProblemDetails"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/ProblemDetails"
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/coverage_guide/org/loads/all": {
      "delete": {
        "tags": [
          "CoverageGuideConnect"
        ],
        "summary": "Delete all loads from Coverage Guide Connect",
        "description": "<p>\n            This endpoint deletes all loads for the organization. Use with caution as this\n            operation removes every load associated with your organization from Coverage Guide Connect.\n            </p>\n<p>\n            No request body is required. The organization is determined from the authentication token.\n            </p>\n<p>\n            The response contains:\n            </p>\n<ul>\n  <li>success: Boolean indicating whether the deletion was successful</li>\n</ul>",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/CoverageGuideConnectDeleteLanesApiResponse"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/ProblemDetails"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/ProblemDetails"
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/CustomData/file/zscores/{date}": {
      "get": {
        "tags": [
          "CustomData"
        ],
        "summary": "Z-Score File",
        "description": "<p> This file allows pre-approved SONAR API clients to receive all necessary market data returned and processed on a given date including underlying proprietary calculations to replicate the SONAR Lane Manager Solution.  \n            Access to this file eliminates the need for daily, manual calculations for SONAR API clients that are powering the SONAR Lane Manager Solution. \n            For more information regarding gaining access to this endpoint or using this endpoint, please reach out to Customer Success at any time. (cs@gosonar.com)</p>\n<span>Example</span>\n<div class=\"example\">\n  <div class=\"parameter\">Date</div>\n  <div class=\"value\">2020-06-09</div>\n  \n\n            Produces https://api.sonar.surf/customdata/file/zscores/2020-06-09\n\n\n            Returns a CSV file with z-score data for the date: 2020-06-09\n            </div>",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "date",
            "description": "The date you wish to grab z-score data for",
            "required": true,
            "type": "string"
          },
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "format": "binary",
              "type": "string"
            }
          }
        }
      }
    },
    "/Data/{index}/{item}/{date}": {
      "get": {
        "tags": [
          "Data"
        ],
        "summary": "Ticker by Item for Date",
        "description": "<p style=\"text-indent: 2em\"> This is the most basic Ticker query for a single date. \"Item\" here is used to designate this basic query from the other queries.\n            For more information, please feel free to use the LookUp API call to find more Indexes and Valid Qualifiers available for searching.\n            A ticker full name would be OTRI.ATL, which will be entered OTRI/ATL into the URL, while Date should be in the form of 'yyyy-MM-dd'.\n            For better understanding on terminology or how to use this API, please feel free to navigate to the help page or contact us.\n            \n\n  An example URL for this API call would be: https://api.sonar.surf/data/OTRI/USA/2018-02-20  </p>",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "Index",
            "description": "This is the ticker index and specifies the index to look up. In the example above, OTRI would be the Ticker Index.",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "Item",
            "description": "This is the ticker qualifier, designated here as item. In the example above, ATL would be the Qualifier Item. For more information, browse the LookUp section and get the full list of supported qualifiers.",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "Date",
            "description": "This is the specific date for the given ticker that was found. In the example above, the date would be 2018-02-20 (yyyy-MM-dd)",
            "required": true,
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns List of Index Data",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/DataIndexObject"
              }
            }
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/Data/{index}/{item}/{startDate}/{endDate}": {
      "get": {
        "tags": [
          "Data"
        ],
        "summary": "Ticker by Item for Date Range",
        "description": "<p style=\"text-indent: 2em\"> This is the most basic Ticker query for a range of dates. \"Item\" here is used to designate this basic query from the other queries.\n            For more information, please feel free to use the LookUp API call to find more Indexes and Valid Qualifiers available for searching.\n            A ticker full name would be OTRI.ATL, which will be entered OTRI/ATL into the URL, while Date should be in the form of 'yyyy-MM-dd'.\n            For better understanding on terminology or how to use this API, please feel free to navigate to the help page or contact us.\n            \n\n An example URL for this API call would be: https://api.sonar.surf/data/OTRI/USA/2018-02-20/2018-02-22  </p>",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "Index",
            "description": "This is the ticker index and specifies the index to look up. In the example above, OTRI would be the Ticker Index",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "Item",
            "description": "This is the ticker qualifier, designated here as item. In the example above, ATL would be the Qualifier Item. For more information, browse the LookUp section and get the full list of supported qualifiers.",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "StartDate",
            "description": "This is the beginning date for the given ticker properties to search for to start the range. In the example above, the start date would be 2018-02-20 (yyyy-MM-dd)",
            "required": true,
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "path",
            "name": "EndDate",
            "description": "This is the ending date for the given ticker properties to search for to end the range. In the example above, the start date would be 2018-02-25 (yyyy-MM-dd)",
            "required": true,
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns List of Index Data",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/DataIndexObject"
              }
            }
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/Data/list/{List}/{startDate}/{endDate}": {
      "get": {
        "tags": [
          "Data"
        ],
        "summary": "Ticker by Multiple Items for Date Range",
        "description": "<p style=\"text-indent: 2em\"> This is the most basic Ticker query for a range of dates. \"Item\" here is used to designate this basic query from the other queries.\n            For more information, please feel free to use the LookUp API call to find more Indexes and Valid Qualifiers available for searching.\n            A ticker full name would be OTRI.ATL, which will be entered OTRI/ATL into the URL, while Date should be in the form of 'yyyy-MM-dd'.\n            For better understanding on terminology or how to use this API, please feel free to navigate to the help page or contact us.\n            \n\n An example URL for this API call would be: https://api.sonar.surf/data/list/OTRI.ATL,OTVI.USA,VTRI.CHI/2018-02-20/2018-02-22  </p>",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "List",
            "description": "This is a list of ticker names in the form of: \"INDEX.QUALIFIER\" without quotations. Example would be: OTRI.ATL,OTVI.USA,VTRI.CHI",
            "required": true,
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "StartDate",
            "description": "This is the beginning date for the given ticker properties to search for to start the range. In the example above, the start date would be 2018-02-20 (yyyy-MM-dd)",
            "required": true,
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "path",
            "name": "EndDate",
            "description": "This is the ending date for the given ticker properties to search for to end the range. In the example above, the start date would be 2018-02-25 (yyyy-MM-dd)",
            "required": true,
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns List of Index Data",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/DataIndexObject"
              }
            }
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/Data/levels/{index}/{level}/{date}": {
      "get": {
        "tags": [
          "Data"
        ],
        "summary": "Ticker by Levels for Date",
        "description": "<p style=\"text-indent: 2em\"> This is the \"Levels\" query for a single date where the qualifier here is being simplified to \"Levels\" (also called Qualifier_Code). This\n            can refer to any geographic qualifier level including but not limited to: XMKT, KMA, NATIONAL, STATE, COUNTY, or ZIP3. For more information,\n            please feel free to use the LookUp API call to find more levels available for searching.\n            A ticker full name would be OTRI.ATL, which will be entered OTRI/ATL into the URL, while Date should be in the form of 'yyyy-MM-dd'.\n            For better understanding on terminology or how to use this API, please feel free to navigate to the help page or contact us.\n            \n\n An example URL for this API call would be: https://api.sonar.surf/data/levels/OTRI/NATIONAL/2018-02-20  </p>",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "Index",
            "description": "This is the ticker index and specifies the index to look up. In the example above, OTRI would be the Ticker Index.",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "Level",
            "description": "This is the ticker qualifier, designated here as level. In the example above, XMKT would be the Ticker Qualifier Level. For more information, browse the LookUp section and get the full list of supported level qualifiers.",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "Date",
            "description": "This is the specific date that matches the given ticker. In the example above, 2018-02-20 would be the Specific Date (yyyy-MM-dd).",
            "required": true,
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns List of Index Data",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/DataIndexObject"
              }
            }
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/Data/levels/{index}/{level}/{startdate}/{enddate}": {
      "get": {
        "tags": [
          "Data"
        ],
        "summary": "Ticker by Levels for Date Range",
        "description": "<p style=\"text-indent: 2em\"> This is the \"Levels\" query for a date range where the qualifier here is being simplified to \"Levels\" (also called Qualifier_Code). This\n            can refer to any geographic qualifier level, including but not limited to: XMKT, NATIONAL, STATE, COUNTY, or ZIP3. For more information,\n            please feel free to use the LookUp API call to find more levels available for searching.\n            A ticker full name would be OTRI.ATL, which will be entered OTRI/ATL into the URL, while Date should be in the form of 'yyyy-MM-dd'.\n            For better understanding on terminology or how to use this API, please feel free to navigate to the help page or contact us.\n            \n\n An example URL for this API call would be: https://api.sonar.surf/data/levels/OTRI/NATIONAL/2018-02-20/2018-02-22  </p>",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "Index",
            "description": "This is the ticker index and specifies the index to look up. In the example above, OTRI would be the Ticker Index",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "Level",
            "description": "This is the ticker qualifier, designated here as level. In the example above, XMKT would be the Ticker Qualifier Level. For more information, browse the LookUp section and get the full list of supported level qualifiers.",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "StartDate",
            "description": "This is the inital date for the given ticker properties to search for to start the range. In the example above, the start date would be 2018-02-20 (yyyy-MM-dd)",
            "required": true,
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "path",
            "name": "EndDate",
            "description": "This is the final date for the given ticker properties to search for to end the range. In the example above, the end date would be 2018-02-25 (yyyy-MM-dd)",
            "required": true,
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns List of Index Data",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/DataIndexObject"
              }
            }
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/Data/levels/list/{List}/{startDate}/{endDate}": {
      "get": {
        "tags": [
          "Data"
        ],
        "summary": "Ticker by Multiple Levels for Date Range",
        "description": "<p style=\"text-indent: 2em\"> This is the \"Levels\" query for a date range where the qualifier here is being simplified to \"Levels\" (also called Qualifier_Code). This\n            can refer to any geographic qualifier level, including but not limited to: XMKT, NATIONAL, STATE, COUNTY, or ZIP3.\n            For more information, please feel free to use the LookUp API call to find more Indexes and Valid Qualifiers available for searching.\n            A ticker full name would be OTRI.ATL, which will be entered OTRI/ATL into the URL, while Date should be in the form of 'yyyy-MM-dd'.\n            For better understanding on terminology or how to use this API, please feel free to navigate to the help page or contact us.\n            \n\n An example URL for this API call would be: https://api.sonar.surf/data/levels/list/OTRI.NATIONAL,VTRI.STATE/2018-02-20/2018-02-22  </p>",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "List",
            "description": "This is a list of ticker names in the form of: \"INDEX.QUALIFIER\" without quotations. Example would be: OTRI.NATIONAL,VTRI.STATE",
            "required": true,
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "StartDate",
            "description": "This is the beginning date for the given ticker properties to search for to start the range. In the example above, the start date would be 2018-02-20 (yyyy-MM-dd)",
            "required": true,
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "path",
            "name": "EndDate",
            "description": "This is the ending date for the given ticker properties to search for to end the range. In the example above, the start date would be 2018-02-25 (yyyy-MM-dd)",
            "required": true,
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns List of Index Data",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/DataIndexObject"
              }
            }
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/Data/lanes/{index}/{lane}/{date}": {
      "get": {
        "tags": [
          "Data"
        ],
        "summary": "Ticker by Lanes for Date",
        "description": "<p style=\"text-indent: 2em\"> This is a \"Lanes\" level call for a single Date where the qualifier here is being simplified to \"Lanes\". This\n            can refer to any geographic qualifier lane. This means you could use this \"Lanes\" search to find outbound or inbound to any of our city codes. For more information,\n            please feel free to use the LookUp API Lanes query to find more lanes available for searching.\n            A ticker full name would be OTRI.ATL, which will be entered OTRI/ATL into the URL, while Date should be in the form of 'yyyy-MM-dd'.\n            For better understanding on terminology or how to use this API, please feel free to navigate to the help page or contact us.\n            \n\n An example URL for this API call would be: https://api.sonar.surf/data/lanes/OTRI/ATL/2018-02-20  </p>",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "Index",
            "description": "This is the ticker index and specifies the index to look up. In the example above, OTRI would be the Ticker Index",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "Lane",
            "description": "This is the ticker qualifier, designated here as lane. This search will look for both outbound and inbound lanes involving the given paramter. In the example above ATL would return many tickers which are associated with ATL, like ATLHOU or HOUATL.",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "Date",
            "description": "This is the specific date that matches the given ticker. In the example above, 2018-02-20 would be the Specific Date. (yyyy-MM-dd)",
            "required": true,
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns List of Index Data",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/DataIndexObject"
              }
            }
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/Data/lanes/{index}/{lane}/{startdate}/{enddate}": {
      "get": {
        "tags": [
          "Data"
        ],
        "summary": "Ticker by Lanes for Date Range",
        "description": "<p style=\"text-indent: 2em\"> This is a \"Lanes\" level call for a Date Range where the qualifier here is being simplified to \"Lanes\". This\n            can refer to any geographic qualifier lane. This means you could use this \"Lanes\" search to find outbound or inbound to any of our city codes. For more information,\n            please feel free to use the LookUp API call to find more lanes available for searching.\n            A ticker full name would be OTRI.ATL, which will be entered OTRI/ATL into the URL, while Date should be in the form of 'yyyy-MM-dd'.\n            For better understanding on terminology or how to use this API, please feel free to navigate to the help page or contact us.\n            \n\n  An example URL for this API call would be: https://api.sonar.surf/data/lanes/OTRI/ATL/2018-02-20/2018-02-22  </p>",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "Index",
            "description": "This is the ticker index and specifies the index to look up. In the example above, OTRI would be the Ticker Index",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "Lane",
            "description": "This is the ticker qualifier, designated here as lane. This search will look for both outbound and inbound lanes involving the given paramter. In the example above ATL would return many tickers which are associated with ATL, like ATLHOU or HOUATL.",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "StartDate",
            "description": "This is the inital date for the given ticker properties to search for to start the range. In the example above, the start date would be 2018-02-20 (yyyy-MM-dd)",
            "required": true,
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "path",
            "name": "EndDate",
            "description": "This is the final date for the given ticker properties to search for to end the range. In the example above, the end date would be 2018-02-25 (yyyy-MM-dd)",
            "required": true,
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns List of Index Data",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/DataIndexObject"
              }
            }
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/Data/lanes/list/{List}/{startDate}/{endDate}": {
      "get": {
        "tags": [
          "Data"
        ],
        "summary": "Ticker by Multiple Lanes for Date Range",
        "description": "<p style=\"text-indent: 2em\"> This is a \"Lanes\" level call for a Date Range where the qualifier here is being simplified to \"Lanes\". This\n            can refer to any geographic qualifier lane. This means you could use this \"Lanes\" search to find outbound or inbound to any of our city codes.\n            For more information, please feel free to use the LookUp API call to find more Indexes and Valid Qualifiers available for searching.\n            A ticker full name would be OTRI.ATL, which will be entered OTRI/ATL into the URL, while Date should be in the form of 'yyyy-MM-dd'.\n            For better understanding on terminology or how to use this API, please feel free to navigate to the help page or contact us.\n            \n\n An example URL for this API call would be: https://api.sonar.surf/data/lanes/list/OTRI.ATL,FOTRI.USA,VTRI.CHI/USA/2018-02-20/2018-02-22  </p>",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "List",
            "description": "This is a list of ticker names in the form of: \"INDEX.QUALIFIER\" without quotations. Example would be: OTRI.ATL,FOTRI.USA,VTRI.CHI",
            "required": true,
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "StartDate",
            "description": "This is the beginning date for the given ticker properties to search for to start the range. In the example above, the start date would be 2018-02-20 (yyyy-MM-dd)",
            "required": true,
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "path",
            "name": "EndDate",
            "description": "This is the ending date for the given ticker properties to search for to end the range. In the example above, the start date would be 2018-02-25 (yyyy-MM-dd)",
            "required": true,
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns List of Index Data",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/DataIndexObject"
              }
            }
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/Data/latest/{index}/{item}": {
      "get": {
        "tags": [
          "Data"
        ],
        "summary": "Latest Ticker by Item",
        "description": "<p style=\"text-indent: 2em\"> This endpoint retrieves the most recent data point for the specified index and item. \"Item\" here is used to designate this basic query from the other queries.\n            For more information, please feel free to use the LookUp API call to find more Indexes and Valid Qualifiers available for searching.\n            A ticker full name would be OTRI.ATL, which will be entered OTRI/ATL into the URL.\n            For better understanding on terminology or how to use this API, please feel free to navigate to the help page or contact us.\n            \n\n  An example URL for this API call would be: https://api.sonar.surf/data/latest/OTRI/USA  </p>",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "Index",
            "description": "This is the ticker index and specifies the index to look up. In the example above, OTRI would be the Ticker Index.",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "Item",
            "description": "This is the ticker qualifier, designated here as item. In the example above, ATL would be the Qualifier Item. For more information, browse the LookUp section and get the full list of supported qualifiers.",
            "required": true,
            "type": "string"
          },
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns List of Index Data",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/LatestDataIndexObject"
              }
            }
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/freight/{index}/{date}": {
      "get": {
        "tags": [
          "FullData"
        ],
        "summary": "Full Data By Index and Date",
        "description": "<p style=\"text-indent: 2em\"> This is the full data return for a given Index and Date which returns the valid Tickers in long form.\n            This is like the Data-Ticker By Item and Date, but it returns all of the specific data we have for the given Index.\n            For more information, please feel free to use the LookUp API call to find more Indexes and Valid Qualifiers available for searching.\n            A ticker full name would be OTRI.ATL, which would use /OTRI/ in the URL, while Date should be in the form of 'yyyy-MM-dd'.\n            For better understanding on terminology or how to use this API, please feel free to navigate to the help page or contact us.\n            \n\n An example URL for this API call would be: https://api.sonar.surf/freight/OTRI/2018-02-20/  </p>",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "Index",
            "description": "This is the Ticker ID Value.",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "Date",
            "description": "This is the Date Value.",
            "required": true,
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns List of Index Data",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/DataLongObject"
              }
            }
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/freight/{index}/{startDate}/{endDate}": {
      "get": {
        "tags": [
          "FullData"
        ],
        "summary": "Full Data By Index and Date Range",
        "description": "<p style=\"text-indent: 2em\"> This is the full data return for a given Index and Date Range which returns the valid Tickers in long form.\n            This is like the Data-Ticker By Item and Date Range, but it returns all of the specific data we have for the given Index.\n            For more information, please feel free to use the LookUp API call to find more Indexes and Valid Qualifiers available for searching.\n            A ticker full name would be OTRI.ATL, which would use /OTRI/ in the URL, while Date should be in the form of 'yyyy-MM-dd'.\n            For better understanding on terminology or how to use this API, please feel free to navigate to the help page or contact us.\n            \n\n An example URL for this API call would be: https://api.sonar.surf/freight/OTRI/2018-02-20/2018-02-22  </p>",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "Index",
            "description": "This is the Ticker ID Value.",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "StartDate",
            "description": "This is the Start Date Value.",
            "required": true,
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "path",
            "name": "EndDate",
            "description": "This is the End Date Value.",
            "required": true,
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns List of Index Data",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/DataLongObject"
              }
            }
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/freight/qualifier/{qualifier}/{date}": {
      "get": {
        "tags": [
          "FullData"
        ],
        "summary": "Full Data By Qualifier and Date",
        "description": "<p style=\"text-indent: 2em\"> This is the full data return for a given Qualifier and Date which returns the valid Tickers in long form.\n            This is like the Data-Ticker By Item and Date, but it returns all of the specific data we have for the given Qualifier.\n            For more information, please feel free to use the LookUp API call to find more Indexes and Valid Qualifiers available for searching.\n            A ticker full name would be OTRI.ATL, which would use /ATL/ in the URL, while Date should be in the form of 'yyyy-MM-dd'.\n            For better understanding on terminology or how to use this API, please feel free to navigate to the help page or contact us.\n            \n\n  An example URL for this API call would be: https://api.sonar.surf/freight/qualifier/USA/2018-02-20  </p>",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "Qualifier",
            "description": "This is the Qualifier ID Value.",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "Date",
            "description": "This is the Date Value.",
            "required": true,
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns List of Index Data",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/DataLongObject"
              }
            }
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/freight/qualifier/{qualifier}/{startDate}/{endDate}": {
      "get": {
        "tags": [
          "FullData"
        ],
        "summary": "Full Data By Qualifier and Date Range",
        "description": "<p style=\"text-indent: 2em\"> This is the full data return for a given Qualifier which returns the valid Tickers for this Qualifier in long form.\n            This is like the Data-Ticker By Item and Date Range, but it returns all of the specific data we have for the given Qualifier.\n            For more information, please feel free to use the LookUp API call to find more Indexes and Valid Qualifiers available for searching.\n            A ticker full name would be OTRI.ATL, which would use /ATL/ in the URL, while Date should be in the form of 'yyyy-MM-dd'.\n            For better understanding on terminology or how to use this API, please feel free to navigate to the help page or contact us.\n            \n\n  An example URL for this API call would be: https://api.sonar.surf/freight/qualifier/USA/2018-02-20/2018-02-22  </p>",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "Qualifier",
            "description": "This is the Ticker Qualifier Value.",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "StartDate",
            "description": "This is the Start Date Value.",
            "required": true,
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "path",
            "name": "EndDate",
            "description": "This is the End Date Value.",
            "required": true,
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns List of Index Data",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/DataLongObject"
              }
            }
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/freight/ticker/{index}/{qualifier}/{date}": {
      "get": {
        "tags": [
          "FullData"
        ],
        "summary": "Full Data By Ticker and Date",
        "description": "<p style=\"text-indent: 2em\"> This is the full data return for a given Index, Qualifier and Date which returns the valid Tickers in long form.\n            This is like the Data-Ticker By Item and Date, but it returns all of the specific data we have for the given Ticker.\n            For more information, please feel free to use the LookUp API call to find more Indexes and Valid Qualifiers available for searching.\n            A ticker full name would be OTRI.ATL, which will be entered OTRI/ATL into the URL, while Date should be in the form of 'yyyy-MM-dd'.\n            For better understanding on terminology or how to use this API, please feel free to navigate to the help page or contact us.\n            \n\n  An example URL for this API call would be: https://api.sonar.surf/freight/ticker/OTRI/USA/2018-02-20  </p>",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "Index",
            "description": "This is the Ticker ID Value.",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "Qualifier",
            "description": "This is the Qualifier ID Value.",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "Date",
            "description": "This is the Date Value.",
            "required": true,
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns List of Index Data",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/DataLongObject"
              }
            }
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/freight/ticker/{index}/{qualifier}/{startDate}/{endDate}": {
      "get": {
        "tags": [
          "FullData"
        ],
        "summary": "Full Data By Ticker and Date Range",
        "description": "<p style=\"text-indent: 2em\"> This is the full data return for a given Index, Qualifier and Date Range which returns the valid Tickers in long form.\n            This is like the Data-Ticker By Item and Date, but it returns all of the specific data we have for the given Ticker.\n            For more information, please feel free to use the LookUp API call to find more Indexes and Valid Qualifiers available for searching.\n            A ticker full name would be OTRI.ATL, which will be entered OTRI/ATL into the URL, while Date should be in the form of 'yyyy-MM-dd'.\n            For better understanding on terminology or how to use this API, please feel free to navigate to the help page or contact us.\n            \n\n  An example URL for this API call would be: https://api.sonar.surf/freight/ticker/OTRI/USA/2018-02-20/2018-02-22  </p>",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "Index",
            "description": "This is the Ticker ID Value.",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "Qualifier",
            "description": "This is the Ticker Qualifier Value.",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "StartDate",
            "description": "This is the Start Date Value.",
            "required": true,
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "path",
            "name": "EndDate",
            "description": "This is the End Date Value.",
            "required": true,
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns List of Index Data",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/DataLongObject"
              }
            }
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/v2/index_data/indexes": {
      "get": {
        "tags": [
          "Index Data V2"
        ],
        "summary": "Indexes",
        "description": "This is the list of available indexes",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns List of Indexes",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/IndexDefinitionJsonResponse"
              }
            }
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/v2/index_data/granularities": {
      "get": {
        "tags": [
          "Index Data V2"
        ],
        "summary": "Valid Granularities",
        "description": "This method will return the list of valid granularities for a given index, optionally filtered by granularity level.",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "index",
            "description": "The given Index to find valid granularities for",
            "type": "string"
          },
          {
            "in": "query",
            "name": "granularity_level",
            "description": "Optional granularity level to filter by",
            "type": "string"
          },
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns List of Granularities",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/GranularityJsonResponse"
              }
            }
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/v2/index_data/granularity_levels": {
      "get": {
        "tags": [
          "Index Data V2"
        ],
        "summary": "Levels",
        "description": "This is the list of available levels",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns List of Levels",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/GranularityLevelJsonResponse"
              }
            }
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/v2/index_data": {
      "get": {
        "tags": [
          "Index Data V2"
        ],
        "summary": "Get Ticker Data (Single)",
        "description": "<p>\n            This endpoint allows permissioned users to retrieve ticker/index data with flexible querying options.\n            Data can be queried by full ticker notation or individual components, allowing for broad or specific searches.\n            </p>\n<p>\n  <strong>Query Parameter Semantics:</strong>\n</p>\n<ul>\n  <li>\n    <strong>ticker</strong>: Fully qualified ticker notation in format \"{Index}.{Granularity}\" (e.g., \"OTMS.DAL\").\n                    When provided, automatically splits into index and granularity1 components. This is the most specific form.</li>\n  <li>\n    <strong>index</strong>: The base ticker/index identifier only (e.g., \"OTMS\"). Use this for broader queries across all granularities of an index.</li>\n  <li>\n    <strong>granularity1</strong>: The primary granularity dimension (e.g., \"USA\", \"DAL\"). Can be used alone or with index.</li>\n  <li>\n    <strong>granularity_level</strong>: Additional granularity level filtering (e.g., location codes).</li>\n</ul>\n<p>\n  <strong>Flexible Querying Examples:</strong>\n</p>\n<ul>\n  <li>Specific ticker: ```ticker=OTMS.DAL``` → Returns OTMS index with DAL granularity</li>\n  <li>All granularities: ```index=OTMS``` → Returns all OTMS data across all granularities</li>\n  <li>Partial granularity: ```index=OTMS&granularity=DAL``` → Returns OTMS with XMKT granularity</li>\n  <li>OTMS for all markets: ```index=OTMS&granularity_level=XMKT``` → Returns OTMS with XMKT granularity</li>\n  <li>With level filter: ```index=OTMS.DAL&granularity_level=XMKT``` → Most specific query</li>\n</ul>\n<p>\n  <strong>Precedence:</strong> ticker takes precedence as it's most specific. Individual parameters override components parsed from ticker.</p>\n<p>\n  <strong>Required Parameters:</strong> start_date, end_date, and at least one of (ticker or index) must be provided.</p>",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "start_date",
            "description": "Start date (YYYY-MM-DD), required",
            "type": "string",
            "format": "date"
          },
          {
            "in": "query",
            "name": "end_date",
            "description": "End date (YYYY-MM-DD), required",
            "type": "string",
            "format": "date"
          },
          {
            "in": "query",
            "name": "ticker",
            "description": "Fully qualified ticker notation (e.g., \"OTMS.DAL\"), optional",
            "type": "string"
          },
          {
            "in": "query",
            "name": "index",
            "description": "Base index identifier (e.g., \"OTMS\"), optional",
            "type": "string"
          },
          {
            "in": "query",
            "name": "granularity",
            "description": "Primary granularity (e.g., \"DAL\"), optional",
            "type": "string"
          },
          {
            "in": "query",
            "name": "granularity_level",
            "description": "Granularity level filter (e.g. \"XMKT\"), optional",
            "type": "string"
          },
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/IndexDataJsonResponse"
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      },
      "post": {
        "tags": [
          "Index Data V2"
        ],
        "summary": "Get Ticker Data (Bulk)",
        "description": "<p>\n            This endpoint allows permissioned users to retrieve ticker/index data for multiple ticker combinations\n            with flexible querying options. Each ticker specification in the request can use different levels of specificity.\n            </p>\n<p>\n  <strong>Request Body Structure:</strong>\n</p>\n<ul>\n  <li>\n    <strong>start_date</strong>: Earliest date of the range (YYYY-MM-DD), required</li>\n  <li>\n    <strong>end_date</strong>: Most recent date of the range (YYYY-MM-DD), required</li>\n  <li>\n    <strong>tickers</strong>: Array of ticker query objects, required. Each object supports flexible querying:</li>\n</ul>\n<p>\n  <strong>Ticker Query Object Fields:</strong>\n</p>\n<ul>\n  <li>\n    <strong>ticker</strong>: Fully qualified notation \"{Index}.{Granularity1}\" (e.g., \"OTMS.DAL\").\n                    Automatically splits into index and granularity1. Most specific form.</li>\n  <li>\n    <strong>index</strong>: Base ticker/index identifier (e.g., \"OTMS\"). Use for broader queries.</li>\n  <li>\n    <strong>granularity1</strong>: Primary granularity dimension (e.g., \"USA\", \"DAL\").</li>\n  <li>\n    <strong>granularity_level</strong>: Additional granularity level filtering.</li>\n</ul>\n<p>\n  <strong>Flexible Query Examples:</strong>\n</p>\n```\n{\n  \"start_date\": \"2025-01-01\",\n  \"end_date\": \"2025-01-20\",\n  \"tickers\": [\n    { \"ticker\": \"OTMS.DAL\" },                                  // Specific ticker\n    { \"index\": \"OTRI\" },                                       // All OTRI granularities\n    { \"index\": \"VSTLR\", \"granularity1\": \"DAL\" },              // Partial specification\n    { \"ticker\": \"TSTOP.NYC\", \"granularity_level\": \"METRO\" }   // With level filter\n  ]\n}\n            \n```\n<p>\n  <strong>Precedence:</strong> ticker takes precedence. Explicit fields (index, granularity1) override components parsed from ticker.</p>\n<p>\n  <strong>Null Handling:</strong> Omitted/null granularity fields enable broader queries (e.g., all granularities for an index).</p>",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "Request object with start_date, end_date, and array of ticker query specifications",
            "schema": {
              "$ref": "#/definitions/IndexDataJsonRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/IndexDataJsonResponse"
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/v2/index_data/latest": {
      "get": {
        "tags": [
          "Index Data V2"
        ],
        "summary": "Get Latest Ticker Data",
        "description": "<p>\n            This endpoint allows permissioned users to retrieve the latest data point for a ticker/index.\n            Data can be queried by full ticker notation or individual components, allowing for broad or specific searches.\n            </p>\n<p>\n  <strong>Query Parameter Semantics:</strong>\n</p>\n<ul>\n  <li>\n    <strong>ticker</strong>: Fully qualified ticker notation in format \"{Index}.{Granularity}\" (e.g., \"OTMS.DAL\").\n                    When provided, automatically splits into index and granularity1 components. This is the most specific form.</li>\n  <li>\n    <strong>index</strong>: The base ticker/index identifier only (e.g., \"OTMS\"). Use this for broader queries across all granularities of an index.</li>\n  <li>\n    <strong>granularity1</strong>: The primary granularity dimension (e.g., \"USA\", \"DAL\"). Can be used alone or with index.</li>\n  <li>\n    <strong>granularity_level</strong>: Additional granularity level filtering (e.g., location codes such as XMKT).</li>\n</ul>\n<p>\n  <strong>Precedence:</strong> ticker takes precedence as it's most specific. Individual parameters override components parsed from ticker.</p>\n<p>\n  <strong>Required Parameters:</strong> at least one of (ticker or index) must be provided.</p>",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "ticker",
            "description": "Fully qualified ticker notation (e.g., \"OTMS.DAL\"), optional",
            "type": "string"
          },
          {
            "in": "query",
            "name": "index",
            "description": "Base index identifier (e.g., \"OTMS\"), optional",
            "type": "string"
          },
          {
            "in": "query",
            "name": "granularity",
            "description": "Primary granularity (e.g., \"DAL\"), optional",
            "type": "string"
          },
          {
            "in": "query",
            "name": "granularity_level",
            "description": "Granularity level filter (e.g. \"XMKT\"), optional",
            "type": "string"
          },
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/IndexDataJsonResponse"
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/v2/index_data/statistics": {
      "post": {
        "tags": [
          "Index Data V2"
        ],
        "summary": "Ticker Statistics",
        "description": "<p>\n            This endpoint allows permissioned users to get statistical aggregations of ticker/security data\n            over specified time periods. The statistics can be aggregated by various time periods including\n            summary (all data in range), weekly, monthly, quarterly, yearly, or week-to-date.\n            </p>\n<p>\n            This endpoint handles the following input fields:\n            </p>\n<ul>\n  <li>tickers: a list of security identifiers to retrieve statistics for, required</li>\n  <li>start_date: the earliest date of the range over which statistics are being requested (YYYY-MM-DD), required</li>\n  <li>end_date: the most recent date of the range over which statistics are being requested (YYYY-MM-DD), required</li>\n  <li>aggregation: time period for aggregation - 'SUMMARY', 'WEEKLY', 'MONTHLY', 'QUARTERLY', 'YEARLY', or 'WTD' (week-to-date), required</li>\n</ul>\n<p>\n            Here are the output fields returned in a successful call:\n            </p>\n<ul>\n  <li>security_id: the ticker/security identifier</li>\n  <li>min_data_date: the start date of the aggregation period</li>\n  <li>max_data_date: the end date of the aggregation period</li>\n  <li>min_value: the minimum value in the period</li>\n  <li>median_value: the median value in the period</li>\n  <li>average_value: the average (mean) value in the period</li>\n  <li>max_value: the maximum value in the period</li>\n  <li>data_point_count: the number of data points included in the aggregation</li>\n  <li>aggregation: the aggregation type used for this period</li>\n</ul>",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "Request Object with 'tickers', 'start_date', 'end_date', and 'aggregation'",
            "schema": {
              "$ref": "#/definitions/TickerAggregationJsonRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/IndexAggregationJsonResponse"
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/v2/intermodal/rates": {
      "post": {
        "tags": [
          "Intermodal V2"
        ],
        "summary": "Intermodal Rates",
        "description": "<p>\n            This endpoint allows permissioned users to get our SONAR intermodal (rail) rates for KMA-to-KMA lanes. Our rate data is being updated weekly and OD pairs can be defined with KMA airport codes, Zip3 or Zip5 for USA, or Canadian postal codes for CAN, supporting any combination.\n            </p>\n<p>\n            A comprehensive list of KMAs, their airport codes, and the zip3’s associated with those KMA’s can be found by calling the KMA Reference List endpoint located under the “Lookup” menu. Additionally, the Zip3 Specific endpoint (also located under the Lookup tab), will return the airport code associated with a zip3 under the “qualifier” header (along with the reference city and state).\n            </p>\n<p>\n            You can click on the Body Sample to the right to populate the example in the test body below.\n            </p>\n<p>\n            For more information about getting access to this endpoint or using this endpoint, please reach out to our Customer Success team (cs@gosonar.com).\n            </p>\n<p>\n            This endpoint handles the following input fields:\n            </p>\n<ul>\n  <li>start_date: the earliest date of the range over which the rate is being requested (YYYY-MM-DD), required</li>\n  <li>end_date: the  most recent date of the range over which the rate is being requested (YYYY-MM-DD), required</li>\n  <li>lane_id: a unique identifier set by the client and will be returned with the response; optional field, not required</li>\n  <li>origin: the 3 character KMA airport code, Zip3 or Zip5 for USA, 3 or 6 character postal code for CAN, of the origin, required</li>\n  <li>origin_country_code: country code for the origin; at this time only lanes within the contiguous US markets and Canada are available, must be ‘USA’ or ‘CAN’, required</li>\n  <li>destination: the 3 character KMA airport code, Zip3 or Zip5 for USA, 3 or 6 character postal code for CAN, of the destination, required</li>\n  <li>destination_country_code: country code for the destination; at this time only lanes within the contiguous US markets and Canada are available, must be ‘USA’ or ‘CAN’, required</li>\n</ul>\n<p>\n            Here are the output fields returned in a successful call:\n            </p>\n<ul>\n  <li>Lanes: A list object that contains the output information associated with the valid requested lanes\n                <ul><li>lane_id: the unique identifier sent in the corresponding call</li><li>miles: the lane distance reflected in the underlying rate data</li><li>origin: the Zip3/Zip5 or 3 character airport code for the lane origin, as provided in the request</li><li>origin_market: the 3 character airport code for the origin Key Market Area (KMA)</li><li>origin_country_code: the 3 character country code the for origin, 'USA' or 'CAN'</li><li>destination: the Zip3/Zip5 or 3 character airport code for the lane destination, as provided in the request</li><li>destination_market: the 3 character airport code for the destination Key Market Area (KMA)</li><li>destination_country_code: the 3 character country code the for destination, 'USA' or 'CAN'</li><li>data_timestamp: the date for which the data in the response was calculated (ie: the date to which the rates in the response were applicable)</li><li>request_date: the date the request was made</li><li>rpm: the median rate-per-mile</li><li>rpm_high: the high-end (67th percentile) rate-per-mile that corresponds to the origin, destination and data_timestamp provided in the API call by the client</li><li>rpm_low: the low-end (33rd percentile) rate-per-mile that corresponds to the origin, destination and data_timestamp provided in the API call by the client</li><li>rate: the median rate that corresponds to the origin, destination and data_timestamp provided in the API call by the client</li><li>rate_high: the high-end (67th percentile) rate that corresponds to the origin, destination and data_timestamp provided in the API call by the client</li><li>rate_low: the low-end (33rd percentile) rate that corresponds to the origin, destination and data_timestamp provided in the API call by the client</li><li>confidence_score: ranges from 1 to 5 with 1 indicating the lowest confidence level and 5 the highest. It is based on how similar the analyzed load set is to the specified time and origin/destination parameters</li><li>origin_radius_expansion: the number of miles away from the edge of the origin KMA we had to expand in order to gather the requisite data to produce the rate. Origin and destination expansion occurs at the same rate</li><li>destination_radius_expansion: the number of miles away from the edge of the destination KMA we had to expand in order to gather the requisite data to produce the rate. Origin and destination expansion occurs at the same rate</li><li>timeframe_expansion: the median lookback period, in days, used to gather the data that produced the rate</li><li>total_load_count: the total number of loads aggregated to calculate the rate; is not weighted</li></ul></li>\n  <li>Errors: a list object that contains information on lanes that are not valid for the rate request\n                <ul><li>original_lane: the lane object exactly as provided in the request (lane_id, origin, origin_country_code, destination, destination_country_code)</li><li>error_found: a lane specific explanation of the issue with the lane information that caused an error</li></ul></li>\n</ul>\n<p>\n            The response returns HTTP 200 when every requested lane returns data, HTTP 206 (Partial Content) when some lanes return data and others error, and HTTP 204 (No Content) when no lanes and no errors are produced.\n            </p>",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "Request Object with 'start_date', 'end_date', and a list of 'lanes' objects. Lanes object contains: 'lane_id' (Customer defined), 'origin' (KMA Airport code), 'origin_country_code', 'destination' (KMA Airport Code), 'destination_country_code'",
            "schema": {
              "$ref": "#/definitions/IntermodalRateJsonRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/IntermodalRateJsonResponse"
            }
          },
          "206": {
            "description": "Partial Content",
            "schema": {
              "$ref": "#/definitions/IntermodalRateJsonResponse"
            }
          },
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/lookup/indexes": {
      "get": {
        "tags": [
          "Lookup"
        ],
        "summary": "Indexes",
        "description": "This is the list of available indexes",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns List of Indexes",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/DataIndexContent"
              }
            }
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/lookup/qualifiers": {
      "get": {
        "tags": [
          "Lookup"
        ],
        "summary": "Valid Qualifiers",
        "description": "This method will return the list of valid qualifiers for a given index",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "Index",
            "description": "The given Index to find valid Tickers for",
            "type": "string"
          },
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns List of Indexes",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/ApiValidTickerObject"
              }
            }
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/lookup/level": {
      "get": {
        "tags": [
          "Lookup"
        ],
        "summary": "Levels",
        "description": "This is the list of available levels",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns List of Levels",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/ApiGranularityLevel"
              }
            }
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/lookup/lane": {
      "get": {
        "tags": [
          "Lookup"
        ],
        "summary": "Lanes",
        "description": "This is the list of available lanes",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns List of Lanes",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/ApiGranularityLane"
              }
            }
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/lookup/index/definition": {
      "post": {
        "tags": [
          "Lookup"
        ],
        "summary": "Index Definition",
        "description": "Provides a list of matching definitions for the given indexes.",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "(From Body) List of Indexes to get definitions for",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns List of Index Definitions",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Index_Def"
              }
            }
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/lookup/qualifier/definition": {
      "post": {
        "tags": [
          "Lookup"
        ],
        "summary": "Qualifier Definition",
        "description": "Provides a list of matching definitions for the given indexes.",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "(From Body) List of qualifiers to get definitions for",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns List of Qualifier Definitions",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Qualifier_Def"
              }
            }
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/lookup/KMA": {
      "get": {
        "tags": [
          "Lookup"
        ],
        "summary": "KMAs",
        "description": "List of Key Market",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns List of Companies",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/lookup/KMARef": {
      "get": {
        "tags": [
          "Lookup"
        ],
        "summary": "KMA Reference List",
        "description": "List of Key Market",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns List of Companies",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/KMALookupObject"
              }
            }
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/lookup/XMKTRef": {
      "get": {
        "tags": [
          "Lookup"
        ],
        "summary": "X-Market Reference List",
        "description": "List of Key Market",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns List of Companies",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/XMKTLookupObject"
              }
            }
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/lookup/zip3": {
      "get": {
        "tags": [
          "Lookup"
        ],
        "summary": "Zip3",
        "description": "This is the list of all our zip3 information",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns List of Lanes",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/ZipLookUpObject"
              }
            }
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/lookup/zip3/{zip}": {
      "get": {
        "tags": [
          "Lookup"
        ],
        "summary": "Zip3 Specific",
        "description": "This is the specific zip3 information which is tied to an airport code for our data sets.",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "Zip",
            "description": "This is the specific 3 character start to a zipcode that is being searched for. Example would be 37421 -> 374 would be the search value.",
            "required": true,
            "type": "string"
          },
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns List of Lanes",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/ZipLookUpObject"
              }
            }
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/lookup/latestData/{index}": {
      "get": {
        "tags": [
          "Lookup"
        ],
        "summary": "Latest Data",
        "description": "This checks to see the newest available data for a given Index",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "Index",
            "description": "This is the index and specifies the index to find the most recent data point.",
            "required": true,
            "type": "string"
          },
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns List of Lanes",
            "schema": {
              "type": "array",
              "items": {
                "format": "date-time",
                "type": "string"
              }
            }
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/lookup/latestData/list/{UserDate}": {
      "get": {
        "tags": [
          "Lookup"
        ],
        "summary": "Latest Data for All Indexes",
        "description": "This returns all Indexes that have been updated since the provided date along with their individual max updated Dates.",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "UserDate",
            "description": "This is the maximum date to be searched against",
            "required": true,
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns List of Ticker with Update Dates",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/TickerUpdate"
              }
            }
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/lookup/point": {
      "get": {
        "tags": [
          "Lookup"
        ],
        "summary": "Look up spatial context data from a set of coordinates.",
        "description": "This returns the XMKT, Country, and Postal Code in North America given a set of point coordinates.",
        "parameters": [
          {
            "in": "query",
            "name": "coordinates",
            "description": "Semicolon-delimited coordinates, ordered in x, y order; e.g. long-lat.",
            "type": "string"
          },
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns List of Ticker with Update Dates"
          },
          "204": {
            "description": "No Data Found at point"
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/lookup/batch-distance": {
      "post": {
        "tags": [
          "Lookup"
        ],
        "summary": "Lookup Bulk Distances for lanes, in miles.",
        "description": "This returns the lane_id, origin,destination, and mileage for a batch of lane requests.",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "Bulk Mileage Request",
            "schema": {
              "$ref": "#/definitions/MileageBatchRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of successful lane mileage responses, as well as a list of errors, as a JSON object.",
            "schema": {
              "$ref": "#/definitions/MileageBatchResponse"
            }
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/equity/index/{index}": {
      "get": {
        "tags": [
          "MarketData"
        ],
        "summary": "FW Equity Data By Index",
        "description": "<p style=\"text-indent: 2em\"> This is the FW Equity data call by Index. This allows you to get our live market stats for any of our tickers. \"FW\" is used to designate that these are made internally\n            using our metrics and data sources. This is also to separate these Tickers from Tickers found outside of SONAR, like the NYSE. This call will return any Indexes that \n            match the provided search parameter. These searches will only provide the most up to data we have, most will be updated intraday. For more information, feel free to navigate\n            to the Help page or just contact us directly.\n            \n\n  An example URL for this API call would be: https://api.sonar.surf/equity/index/FOTRI  </p>",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "Index",
            "description": "This is the Ticker Index Value to Search.",
            "required": true,
            "type": "string"
          },
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns List of Index Data",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/FullEquityObject"
              }
            }
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/equity/qualifier/{qualifier}": {
      "get": {
        "tags": [
          "MarketData"
        ],
        "summary": "FW Equity Data By Qualifier",
        "description": "<p style=\"text-indent: 2em\"> This is the FW Equity data call by Qualifier. This allows you to get our live market stats for any of our tickers. \"FW\" is used to designate that these are made internally\n            using our metrics and data sources. This is also to separate these Tickers from Tickers found outside of SONAR, like the NYSE. This call will return any Qualifiers of valid Indexes\n            that match the provided search parameter. These searches will only provide the most up to data we have, most will be updated intraday. For more information, feel free to navigate\n            to the Help page or just contact us directly.\n            \n\n  An example URL for this API call would be: https://api.sonar.surf/equity/qualifier/USA  </p>",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "Qualifier",
            "description": "This is the Ticker Qualifier Value to be searched on.",
            "required": true,
            "type": "string"
          },
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns List of Index Data",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/FullEquityObject"
              }
            }
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/market/summary": {
      "get": {
        "tags": [
          "MarketData"
        ],
        "summary": "FW Market Summary Data",
        "description": "<p style=\"text-indent: 2em\"> FW Market Summary Data</p>\n\n",
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns Market Summary Data"
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/equity/ticker/{index}/{qualifier}": {
      "get": {
        "tags": [
          "MarketData"
        ],
        "summary": "FW Equity Data by Index and Qualifier",
        "description": "<p style=\"text-indent: 2em\"> This is the FW Equity data call by both Index and Qualifier. This allows you to get our live market stats for any of our tickers. \"FW\" is used to designate that these are made internally\n            using our metrics and data sources. This is also to separate these Tickers from Tickers found outside of SONAR, like the NYSE. This call will return any Qualifiers of valid Indexes\n            that match the provided search parameter. These searches will only provide the most up to data we have, most will be updated intraday. For more information, feel free to navigate\n            to the Help page or just contact us directly.\n            \n\n  An example URL for this API call would be: https://api.sonar.surf/equity/ticker/FOTRI/USA  </p>",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "Index",
            "description": "This is the Ticker Index Value to search on.",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "Qualifier",
            "description": "This is the Ticker Qualifier Value to search on.",
            "required": true,
            "type": "string"
          },
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns List of Index Data",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/FullEquityObject"
              }
            }
          },
          "401": {
            "description": "Unauthorized Request"
          },
          "500": {
            "description": "Internal Server error"
          }
        }
      }
    },
    "/Ocean/locations": {
      "get": {
        "tags": [
          "Ocean"
        ],
        "summary": "Ocean Metrics Locations",
        "description": "<p>\n            This endpoint allows permissioned users to get all available ocean route locations that can be origins and/or destinations to request data on ocean lanes.\n            </p>\n<p>\n            For more information about getting access to this endpoint or using this endpoint, please reach out to our Customer Success team (cs@gosonar.com).\n            </p>\n<p>\n            Returns a collection of all supported ocean route origin/destination locations including specific ports, all ports in a given country or even all ports wordlwide.\n            </p>\n<p>\n            Here are the output fields returned in a successful call:\n            </p>\n<ul>\n  <li>code: a unique code to identify any ocean data location</li>\n  <li>port: a unique code to identify a specific port, when the location type is port, this will be the same as the code</li>\n  <li>port_name: a human readable port name</li>\n  <li>country: the country for the location</li>\n  <li>type: the type of location, may be Port, Country or AllPorts</li>\n</ul>",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/OceanBookingLocation"
              }
            }
          }
        }
      }
    },
    "/Ocean/lane_locations": {
      "get": {
        "tags": [
          "Ocean"
        ],
        "summary": "Ocean Lane Locations",
        "description": "<p>\n            This endpoint allows permissioned users to discover which origin and destination combinations form valid ocean lanes with available data.\n            </p>\n<p>\n            For more information about getting access to this endpoint or using this endpoint, please reach out to our Customer Success team (cs@gosonar.com).\n            </p>\n<p>\n            Provide an `origin` to receive the destinations that pair with it in a lane. Provide a `destination` to receive the origins that pair with it. Omit both to receive all valid origin and destination codes.\n            </p>\n<p>\n            Returns an object with two arrays:\n            </p>\n<ul>\n  <li>origins: the set of origin locations matching the filter</li>\n  <li>destinations: the set of destination locations matching the filter</li>\n</ul>\n<p>\n            Each location in either array contains the same fields as the `/ocean/locations` endpoint (code, port, port_name, country, type).\n            </p>",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "origin",
            "description": "Optional origin location code — when provided, returns only destinations that form a valid lane with this origin",
            "type": "string"
          },
          {
            "in": "query",
            "name": "destination",
            "description": "Optional destination location code — when provided, returns only origins that form a valid lane with this destination",
            "type": "string"
          },
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/OceanLaneLocationsResponse"
            }
          }
        }
      }
    },
    "/Ocean/metrics/all-bookings-by-version-date": {
      "post": {
        "tags": [
          "Ocean"
        ],
        "summary": "All Booking Versions By Version Date",
        "description": "<p>\n            This endpoint allows permissioned users to get ocean booking metrics for a given ocean lane and historical timeframe\n            </p>\n<p>\n            For more information about getting access to this endpoint or using this endpoint, please reach out to our Customer Success team (cs@gosonar.com).\n            </p>\n<p>\n            Returns a timeseries collection of booking metrics for the given ocean lane and date range.\n            </p>\n<p>\n            This endpoint handles the following input fields:\n            </p>\n<ul>\n  <li>origin: the Ocean Location code for the origin, required</li>\n  <li>destination: the Ocean Location code for the destination, required</li>\n  <li>start_date: the earliest version date of the range being requested</li>\n  <li>end_date: the latest version date of the range being requested</li>\n</ul>\n<p>\n            Here are the output fields returned in a successful call:\n            </p>\n<ul>\n  <li>origin: an object containing the origin location details</li>\n  <li>destination: an object containing the destination location details</li>\n  <li>start_date: the first date in the range requested</li>\n  <li>end_date: the last date in the range requested</li>\n  <li>values: the collection of metrics records for the given date range\n                    <ul><li>date: the date for the metrics record</li><li>confirmed_teu_count_global_index: an index that represents the rolling 1, 7 or 14-day average count of TEUs confirmed by ocean carriers</li><li>confirmed_transaction_count_global_index: an index that represents the rolling 11, 7 or 14-day average count of transactions confirmed by ocean carriers</li><li>teu_count_rejection_rate: rolling 1, 7 or 14-day average for the percent of TEU rejections</li><li>transaction_count_rejection_rate: rolling 1, 7 or 14-day average for the percent of transaction rejections</li></ul></li>\n</ul>",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "Request with 'origin', 'destination', 'startDate' and 'endDate'",
            "schema": {
              "$ref": "#/definitions/OceanMetricsRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/AllBookingsByVersionDateResponse"
            }
          }
        }
      }
    },
    "/Ocean/metrics/first-and-last-booking-versions-by-version-date": {
      "post": {
        "tags": [
          "Ocean"
        ],
        "summary": "First and Last Booking Versions By Version Date",
        "description": "<p>\n            This endpoint allows permissioned users to get ocean rejection metrics for a given ocean lane and historical timeframe\n            </p>\n<p>\n            For more information about getting access to this endpoint or using this endpoint, please reach out to our Customer Success team (cs@gosonar.com).\n            </p>\n<p>\n            Returns a timeseries collection of rejection metrics for the given ocean lane and date range.\n            </p>\n<p>\n            This endpoint handles the following input fields:\n            </p>\n<ul>\n  <li>origin: the Ocean Location code for the origin, required</li>\n  <li>destination: the Ocean Location code for the destination, required</li>\n  <li>start_date: the earliest version date of the range being requested</li>\n  <li>end_date: the latest version date of the range being requested</li>\n</ul>\n<p>\n            Here are the output fields returned in a successful call:\n            </p>\n<ul>\n  <li>origin: an object containing the origin location details</li>\n  <li>destination: an object containing the destination location details</li>\n  <li>start_date: the first date in the range requested</li>\n  <li>end_date: the last date in the range requested</li>\n  <li>values: the collection of metrics records for the given date range\n                    <ul><li>date: the date for the metrics record</li><li>teu_count_rejection_rate: rolling 1, 7 or 14-dayaverage for the percent of TEU rejections</li><li>transaction_count_rejection_rate: rolling 1, 7 or 14-day average for the percent of transaction rejections</li></ul></li>\n</ul>",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "Request with 'origin', 'destination', 'startDate' and 'endDate'",
            "schema": {
              "$ref": "#/definitions/OceanMetricsRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/FirstAndLastBookingVersionsResponse"
            }
          }
        }
      }
    },
    "/Ocean/metrics/first-bookings-by-departure-date": {
      "post": {
        "tags": [
          "Ocean"
        ],
        "summary": "First Booking Versions By Departure Date",
        "description": "<p>\n            This endpoint allows permissioned users to get ocean booking metrics for a given ocean lane and departure timeframe\n            </p>\n<p>\n            For more information about getting access to this endpoint or using this endpoint, please reach out to our Customer Success team (cs@gosonar.com).\n            </p>\n<p>\n            Returns a timeseries collection of booking metrics for the given ocean lane and departure date range.\n            </p>\n<p>\n            This endpoint handles the following input fields:\n            </p>\n<ul>\n  <li>origin: the Ocean Location code for the origin, required</li>\n  <li>destination: the Ocean Location code for the destination, required</li>\n  <li>start_date: the earliest version date of the range being requested</li>\n  <li>end_date: the latest version date of the range being requested</li>\n</ul>\n<p>\n            Here are the output fields returned in a successful call:\n            </p>\n<ul>\n  <li>origin: an object containing the origin location details</li>\n  <li>destination: an object containing the destination location details</li>\n  <li>start_date: the first date in the range requested</li>\n  <li>end_date: the last date in the range requested</li>\n  <li>values: the collection of metrics records for the given date range\n                    <ul><li>date: the date for the metrics record</li><li>confirmed_teu_count_0_day_lead_index: an index that represents the rolling 1, 7 or 14-day average count of TEUs confirmed by ocean carriers on a 0 day lead</li><li>confirmed_teu_count_7_day_lead_index: an index that represents the rolling 1, 7 or 14-day average count of TEUs confirmed by ocean carriers on a 7 day lead</li><li>confirmed_teu_count_14_day_lead_index: an index that represents the rolling 1, 7 or 14-day average count of TEUs confirmed by ocean carriers on a 14 day lead</li><li>confirmed_teu_count_21_day_lead_index: an index that represents the rolling 1, 7 or 14-day average count of TEUs confirmed by ocean carriers on a 21 day lead</li><li>confirmed_teu_count_28_day_lead_index: an index that represents the rolling 1, 7 or 14-day average count of TEUs confirmed by ocean carriers on a 28 day lead</li></ul></li>\n</ul>",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "Request with 'origin', 'destination', 'startDate' and 'endDate'",
            "schema": {
              "$ref": "#/definitions/OceanMetricsRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/FirstBookingsByDepartureDateResponse"
            }
          }
        }
      }
    },
    "/Ocean/metrics/first-bookings-by-version-date": {
      "post": {
        "tags": [
          "Ocean"
        ],
        "summary": "First Booking Versions By Version Date",
        "description": "<p>\n            This endpoint allows permissioned users to get ocean booking metrics for a given ocean lane and historical timeframe\n            </p>\n<p>\n            For more information about getting access to this endpoint or using this endpoint, please reach out to our Customer Success team (cs@gosonar.com).\n            </p>\n<p>\n            Returns a timeseries collection of first booking metrics for the given ocean lane and date range.\n            </p>\n<p>\n            This endpoint handles the following input fields:\n            </p>\n<ul>\n  <li>origin: the Ocean Location code for the origin, required</li>\n  <li>destination: the Ocean Location code for the destination, required</li>\n  <li>start_date: the earliest version date of the range being requested</li>\n  <li>end_date: the latest version date of the range being requested</li>\n</ul>\n<p>\n            Here are the output fields returned in a successful call:\n            </p>\n<ul>\n  <li>origin: an object containing the origin location details</li>\n  <li>destination: an object containing the destination location details</li>\n  <li>start_date: the first date in the range requested</li>\n  <li>end_date: the last date in the range requested</li>\n  <li>values: the collection of metrics records for the given date range\n                    <ul><li>date: the date for the metrics record</li><li>confirmed_teu_count_global_index: an index that represents the rolling 1, 7 or 14-day average count of TEUs confirmed by ocean carriers</li><li>confirmed_transaction_count_global_index: an index that represents the rolling 1, 7 or 14-day average count of transactions confirmed by ocean carriers</li><li>transit_time_days: a number that represents the rolling 1, 7 or 14-day average transit time in days</li></ul></li>\n</ul>",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "Request with 'origin', 'destination', 'startDate' and 'endDate'",
            "schema": {
              "$ref": "#/definitions/OceanMetricsRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/FirstBookingsByVersionDateResponse"
            }
          }
        }
      }
    },
    "/Ocean/metrics/last-bookings-by-departure-date": {
      "post": {
        "tags": [
          "Ocean"
        ],
        "summary": "Last Booking Versions By Departure Date",
        "description": "<p>\n            This endpoint allows permissioned users to get ocean booking metrics for a given ocean lane and timeframe\n            </p>\n<p>\n            For more information about getting access to this endpoint or using this endpoint, please reach out to our Customer Success team (cs@gosonar.com).\n            </p>\n<p>\n            Returns a timeseries collection of last booking metrics for the given ocean lane and date range.\n            </p>\n<p>\n            This endpoint handles the following input fields:\n            </p>\n<ul>\n  <li>origin: the Ocean Location code for the origin, required</li>\n  <li>destination: the Ocean Location code for the destination, required</li>\n  <li>start_date: the earliest version date of the range being requested</li>\n  <li>end_date: the latest version date of the range being requested</li>\n</ul>\n<p>\n            Here are the output fields returned in a successful call:\n            </p>\n<ul>\n  <li>origin: an object containing the origin location details</li>\n  <li>destination: an object containing the destination location details</li>\n  <li>start_date: the first date in the range requested</li>\n  <li>end_date: the last date in the range requested</li>\n  <li>values: the collection of metrics records for the given date range\n                    <ul><li>date: the date for the metrics record</li><li>confirmed_teu_count_global_index: an index that represents the rolling 1, 7 or 14-day average count of TEUs confirmed by ocean carriers</li><li>confirmed_transaction_count_global_index: an index that represents the rolling 1-day or 1, 7 or 14-day average count of transactions confirmed by ocean carriers</li><li>transit_time_days: a number that represents the rolling 1, 7 or 14-day average transit time in days</li></ul></li>\n</ul>",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "Request with 'origin', 'destination', 'startDate' and 'endDate'",
            "schema": {
              "$ref": "#/definitions/OceanMetricsRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/LastBookingVersionByDepartureDateResponse"
            }
          }
        }
      }
    },
    "/Ocean/metrics/amended-bookings-by-version-date": {
      "post": {
        "tags": [
          "Ocean"
        ],
        "summary": "Amended Booking Versions By Version Date",
        "description": "<p>\n            This endpoint allows permissioned users to get ocean booking metrics for a given ocean lane and historical timeframe\n            </p>\n<p>\n            For more information about getting access to this endpoint or using this endpoint, please reach out to our Customer Success team (cs@gosonar.com).\n            </p>\n<p>\n            Returns a timeseries collection of booking metrics for the given ocean lane and date range.\n            </p>\n<p>\n            This endpoint handles the following input fields:\n            </p>\n<ul>\n  <li>origin: the Ocean Location code for the origin, required</li>\n  <li>destination: the Ocean Location code for the destination, required</li>\n  <li>start_date: the earliest version date of the range being requested</li>\n  <li>end_date: the latest version date of the range being requested</li>\n</ul>\n<p>\n            Here are the output fields returned in a successful call:\n            </p>\n<ul>\n  <li>origin: an object containing the origin location details</li>\n  <li>destination: an object containing the destination location details</li>\n  <li>start_date: the first date in the range requested</li>\n  <li>end_date: the last date in the range requested</li>\n  <li>values: the collection of metrics records for the given date range\n                    <ul><li>date: the date for the metrics record</li><li>confirmed_teu_count_global_index: an index that represents the rolling 1, 7 or 14-day average count of TEUs confirmed by ocean carriers</li><li>confirmed_transaction_count_global_index: an index that represents the rolling 1, 7 or 14-day average count of transactions confirmed by ocean carriers</li><li>teu_count_rejection_rate: rolling 1, 7 or 14-day average for the percent of TEU rejections</li><li>transaction_count_rejection_rate: rolling 1, 7 or 14-day average for the percent of transaction rejections</li></ul></li>\n</ul>",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "Request with 'origin', 'destination', 'startDate' and 'endDate'",
            "schema": {
              "$ref": "#/definitions/OceanMetricsRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/AmendedBookingsByVersionDateResponse"
            }
          }
        }
      }
    },
    "/partnership/data": {
      "post": {
        "tags": [
          "Partnership"
        ],
        "summary": "Get Freight Market Data for Lane",
        "description": "<p>\n            This endpoint allows permissioned users to retrieve comprehensive freight market data for a specific trucking lane, providing real-time market rates and indices in a single API call.\n            </p>\n<p>\n            For more information about getting access to this endpoint or using this endpoint, please reach out to our Customer Success team (cs@gosonar.com).\n            </p>\n<p>\n            Returns current market data including TRAC rates, freight market indices, and lane scoring metrics for the specified origin-destination pair and equipment type.\n            </p>\n<p>\n            This endpoint handles the following input fields:\n            </p>\n<ul>\n  <li>origin: ZIP3 or ZIP5 code for the shipment origin (e.g., \"123\" or \"12345\"), required</li>\n  <li>destination: ZIP3 or ZIP5 code for the shipment destination (e.g., \"456\" or \"45678\"), required</li>\n  <li>equipment_type: Type of trucking equipment - must be one of: \"VAN\", \"REEFER\", or \"FLATBED\", required</li>\n  <li>miles: Specific lane distance in miles for rate calculations. If not provided, the system will calculate the miles automatically based on origin and destination. Must be a positive number if provided, optional</li>\n</ul>\n<p>\n            Here are the output fields returned in a successful call:\n            </p>\n<ul>\n  <li>origin: The Zip3/Zip5 code for the lane origin, as provided in the request</li>\n  <li>destination: The Zip3/Zip5 code for the lane destination, as provided in the request</li>\n  <li>miles: The lane distance in miles</li>\n  <li>trac_rate: The median total (linehaul plus fuel surcharge) rate that corresponds to the origin, destination, equipment_type and data_timestamp provided in the API call by the client</li>\n  <li>trac_rate_high: The high-end (67th percentile) total (linehaul plus fuel surcharge) rate that corresponds to the origin, destination, equipment_type and data_timestamp provided in the API call by the client</li>\n  <li>trac_rate_low: The low-end (33rd percentile) total (linehaul plus fuel surcharge) rate that corresponds to the origin, destination, equipment_type and data_timestamp provided in the API call by the client</li>\n  <li>trac_rpm: The median total (linehaul plus fuel surcharge) rate-per-mile that corresponds to the origin, destination, equipment_type and data_timestamp provided in the API call by the client</li>\n  <li>trac_rpm_high: The high-end (67th percentile) total (linehaul plus fuel surcharge) rate-per-mile that corresponds to the origin, destination, equipment_type and data_timestamp provided in the API call by the client</li>\n  <li>trac_rpm_low: The low-end (33rd percentile) total (linehaul plus fuel surcharge) rate-per-mile that corresponds to the origin, destination, equipment_type and data_timestamp provided in the API call by the client</li>\n  <li>nti_usa_value: The National Truckload Index value for the USA</li>\n  <li>otri_origin_market: The Outbound Tender Rejection Index value for the origin market</li>\n  <li>otvi_origin_market: The Outbound Tender Volume Index value for the origin market</li>\n  <li>csteu_usa_value: The US Customs Maritime Import TEUs value for the USA</li>\n  <li>orail_usa_value: The Total Outbound Rail Container Volume value for the USA</li>\n  <li>haul_value: Shows the difference between the Outbound Tender Volume Index (OTVI) and the Inbound Tender Volume Index (ITVI). Negative is inbound heavy Positive is outbound heavy.</li>\n  <li>sonar_lane_score: The lane score for the requested lane</li>\n  <li>equipment_type: The type of trucking equipment used in the request returned</li>\n</ul>",
        "consumes": [
          "application/octet-stream",
          "application/json-patch+json",
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "Partnership data request containing origin, destination, equipment type, and optional miles",
            "schema": {
              "$ref": "#/definitions/PartnershipDataRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the partnership data",
            "schema": {
              "$ref": "#/definitions/PartnershipDataResponse"
            }
          },
          "400": {
            "description": "Invalid request parameters",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "401": {
            "description": "Unauthorized - invalid or missing authentication"
          },
          "403": {
            "description": "Forbidden - organization not entitled to Partnership API"
          },
          "429": {
            "description": "Too Many Requests - rate limit exceeded"
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      }
    },
    "/ingest/trac/json": {
      "post": {
        "tags": [
          "TRACIngest"
        ],
        "summary": "Ingests multiple shipment records in JSON format.",
        "description": "Required fields: shipment_id, shipper_id, origin_city, origin_state, origin_zipcode,\norigin_country, destination_city, destination_state, destination_zipcode, destination_country,\norder_tender_datetime, order_covered_datetime, miles, mode, full_partial, equipment_type,\ncarrier_total_rate. All other fields are optional and accept null or omission.\n            \nExample JSON:\n```\n[{\n  \"shipment_id\": \"string\",\n  \"transaction_id\": \"string\",\n  \"shipper_id\": \"string\",\n  \"shipper_name\": \"string\",\n  \"shipper_naics_code\": \"string\",\n  \"shipper_sic_code\": \"string\",\n  \"cargo_description\": \"string\",\n  \"origin_address\": \"string\",\n  \"origin_city\": \"string\",\n  \"origin_state\": \"string\",\n  \"origin_zipcode\": \"string\",\n  \"origin_country\": \"string\",\n  \"destination_address\": \"string\",\n  \"destination_city\": \"string\",\n  \"destination_state\": \"string\",\n  \"destination_zipcode\": \"string\",\n  \"destination_country\": \"string\",\n  \"order_tender_datetime\": \"2023-12-20T20:25:43.515Z\",\n  \"order_covered_datetime\": \"2023-12-20T20:25:43.515Z\",\n  \"scheduled_pickup_datetime\": \"2023-12-20T20:25:43.515Z\",\n  \"actual_pickup_datetime\": \"2023-12-20T20:25:43.515Z\",\n  \"scheduled_delivery_datetime\": \"2023-12-20T20:25:43.515Z\",\n  \"actual_delivery_datetime\": \"2023-12-20T20:25:43.515Z\",\n  \"carrier_id\": \"string\",\n  \"carrier_name\": \"string\",\n  \"carrier_asset_size\": \"string\",\n  \"dot_number\": \"string\",\n  \"mc_number\": \"string\",\n  \"scac_code\": \"string\",\n  \"load_number\": \"string\",\n  \"miles\": 0,\n  \"mode\": \"string\",\n  \"full_partial\": \"string\",\n  \"equipment_type\": \"string\",\n  \"equipment_detail\": \"string\",\n  \"dimensions\": \"string\",\n  \"currency\": \"string\",\n  \"carrier_total_rate\": 0,\n  \"carrier_linehaul_rate\": 0,\n  \"fuel_surcharge_paid_to_carrier\": 0,\n  \"other_accessorial_paid_to_carrier\": 0,\n  \"load_unload_paid_to_carrier\": 0,\n  \"stop_charges_paid_to_carrier\": 0,\n  \"driver_assist_charges_paid_to_carrier\": 0,\n  \"hazmat_charge_paid_to_carrier\": 0,\n  \"other_accessorial_description_carrier\": \"string\",\n  \"shipper_total_rate\": 0,\n  \"shipper_linehaul_rate\": 0,\n  \"fuel_surcharge_paid_by_shipper\": 0,\n  \"other_accessorial_paid_by_shipper\": 0,\n  \"load_unload_paid_by_shipper\": 0,\n  \"stop_charges_paid_by_shipper\": 0,\n  \"driver_assist_charges_paid_by_shipper\": 0,\n  \"hazmat_charge_paid_by_shipper\": 0,\n  \"other_accessorial_description_shipper\": \"string\",\n  \"spot_contract\": \"string\",\n  \"payment_terms\": \"string\",\n  \"consignee_id\": \"string\",\n  \"consignee_name\": \"string\",\n  \"nmfc_code\": \"string\",\n  \"cargo_insurance_coverage\": \"string\",\n  \"cargo_insurance_coverage_currency\": \"string\",\n  \"declared_value\": 0,\n  \"straps_chains\": \"string\",\n  \"oversized\": true,\n  \"temperature_control\": true,\n  \"frozen\": true,\n  \"temperature\": \"string\",\n  \"hazmat\": true,\n  \"permits\": \"string\",\n  \"tarp_required\": true,\n  \"tarp_size\": \"string\",\n  \"team_express\": true,\n  \"drop_hook\": true,\n  \"expedited\": true,\n  \"specialized\": true,\n  \"number_of_pickups\": 0,\n  \"number_of_drops\": 0,\n  \"number_of_stops\": 0,\n  \"weight\": 0\n}]\n```",
        "consumes": [
          "application/octet-stream",
          "application/json-patch+json",
          "application/json",
          "text/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "JSON array representing shipment record(s).",
            "schema": { }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ProcessingResult"
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "schema": {
              "$ref": "#/definitions/ProcessingResult"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/ProblemDetails"
            }
          }
        }
      }
    },
    "/ingest/trac/csv": {
      "post": {
        "tags": [
          "TRACIngest"
        ],
        "summary": "Ingests shipment records from a CSV file.",
        "description": "After choosing a file, you must click the **\"Try\"** button under the \"Test this endpoint\" section to upload and process it. \nA result summary will appear below once processing is complete.",
        "consumes": [
          "multipart/form-data"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          },
          {
            "in": "formData",
            "name": "File",
            "description": "CSV file containing multiple shipment records.",
            "type": "file"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ProcessingResult"
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "schema": {
              "$ref": "#/definitions/ProcessingResult"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/ProblemDetails"
            }
          }
        }
      }
    },
    "/truckload/capacity/lane_scores": {
      "post": {
        "tags": [
          "Truckload"
        ],
        "summary": "Capacity Lane Scores",
        "description": "<p>\n            This endpoint allows permissioned users to call and return our SONAR Capacity Lane Scores. The scores provided in this endpoint come from combining tender rejection rates and market balance of inbound/outbound loads and convey unique insight into the current capacity conditions on a given lane. Our capacity data is updated daily.\n            </p>\n<p>\n            For more information about getting access to this endpoint or using this endpoint, please reach out to our Customer Success team (cs@gosonar.com).\n            </p>\n<p>\n            Returns capacity lane scores, market scores, and day over day change in lane score based off of SONAR internal metrics. Note that even though the origin and destination input fields take zip codes, the lane score is based on the market to market lane. This endpoint handles the following input fields:\n            </p>\n<ul>\n  <li>start_date: the start date of the range over which the Capacity Lane Scores are being requested (YYYY-MM-DD); required field</li>\n  <li>end_date: the end date of the range over which the Capacity Lane Scores are being requested (YYYY-MM-DD); required field</li>\n  <li>lanes: an embedded list of the following fields:</li>\n  <ul>\n    <li>lane_id: a unique identifier set by the client and will be returned with the response; optional field</li>\n    <li>origin: the 5 (or 3) digit postal/zip code for the origin point including leading zero(s); required field</li>\n    <li>destination: the 5 (or 3) digit postal/zip code for the destination point including leading zero(s); required field</li>\n    <li>equipment_type: must  be ‘VAN’ or ‘REEFER’; required field</li>\n    <li>origin_country_code: country code for the origin; optional field, defaults to (and currently scores are only available for) 'USA'; accepts “CAN” and “MEX” for future iterations</li>\n    <li>destination_country_code: country code for the destination; optional field, defaults to (and currently scores are only available for) 'USA'; accepts “CAN” and “MEX” for future iterations</li>\n  </ul>\n</ul>\n<p>\n            Here are the output fields returned in a successful call:\n            </p>\n<ul>\n  <li>lane_id: the identifier sent in the corresponding call if provided</li>\n  <li>data_timestamp: the date for which the data in the response was calculated (ie: the date of the capacity lane and market scores in the response)</li>\n  <li>origin: the origin zip/postal code provided in the API call by the client</li>\n  <li>origin_country_code: the country code for the origin provided in the API call by the client; defaults to 'USA' if none was given</li>\n  <li>origin_market: the 3 character market code for the origin market that corresponds to the origin zip code zip code provided by the client</li>\n  <li>destination: the destination zip/postal code provided in the API call by the client</li>\n  <li>destination_country_code: the country code for the destination provided in the API call by the client; defaults to 'USA' if none was given</li>\n  <li>destination_market: the 3 character market code for the destination market that corresponds to the destination zip code provided by the client</li>\n  <li>equipment_type: the equipment_type provided in the API call by the client (for which the scores in the response apply)</li>\n  <li>capacity_lane_score: the capacity lane score for the lane (origin_market and destination_market pair) on the corresponding date (data_timestamp)</li>\n  <li>day_over_day_change: the change in capacity lane score from the previous day. It is the lane score for the requested day (data_timestamp) minus the lane score for the previous day.</li>\n  <li>origin_capacity_trend_score: the 4 week capacity trend score for the origin market (origin_market) that corresponds to the origin zip/postal code provided in the API call by the client.</li>\n  <li>destination_capacity_trend_score: the 4 week capacity trend score for the destination market (destination_market) that corresponds to the destination zip/postal code provided in the API call by the client.</li>\n</ul>",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "Request Object with 'startDate', 'endDate', and a list of 'lanes' objects. Lanes object contains: 'lane_id' (Customer defined), 'origin' (Zip3), 'destination' (Zip3), 'equipment_type' (REEFER/VAN)",
            "schema": {
              "$ref": "#/definitions/CapacityLaneRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/CapacityLaneResponse"
              }
            }
          }
        }
      }
    },
    "/truckload/capacity/sonar_lane_scores": {
      "post": {
        "tags": [
          "Truckload"
        ],
        "summary": "SONAR Lane Scores",
        "description": "<p>\n            This endpoint allows permissioned users to call and return our SONAR Lane Scores at a KMA (Key Market Area) to KMA lane level. The scores provided in this endpoint measure the balance of the flow of capacity in a lane. Outbound heavy lanes are scored lower while lanes that originate in areas with heavy inbound score higher. SONAR Lane Scores are updated daily, the scores provided in this endpoint are an average based on the start and end date in the request. If you'd like to get a lane score for a single point in time you can make the start and end dates the same.\n            </p>\n<p>\n            A comprehensive list of KMAs, their airport codes, and the zip3’s associated with those KMA’s can be found by calling the KMA Reference List endpoint located under the “Lookup” menu. Additionally, the Zip3 Specific endpoint (also located under the Lookup tab) will return the airport code associated with a zip3 under the “qualifier” header (along with the reference city and state).\n            </p>\n<p>\n            You can click on the Body Sample to the right to populate the example in the test body below.\n            </p>\n<p>\n            For more information about getting access to this endpoint or using this endpoint, please reach out to our Customer Success team (cs@gosonar.com).\n            </p>\n<p>\n            Returns lane scores based off of SONAR internal metrics. This endpoint handles the following input fields:\n            </p>\n<ul>\n  <li>start_date: the start date of the range over which the Lane Scores are being requested (YYYY-MM-DD); required field</li>\n  <li>end_date: the end date of the range over which the Lane Scores are being requested (YYYY-MM-DD); required field</li>\n  <li>lanes: an embedded list of the following fields:</li>\n  <ul>\n    <li>lane_id: a unique identifier set by the client and will be returned with the response; optional</li>\n    <li>origin: the 3 character airport code for the origin Key Market Area (KMA), required</li>\n    <li>destination: the 3 character airport code for the destination Key Market Area (KMA), required</li>\n    <li>equipment_type: must  be ‘VAN’ or ‘REEFER’; required</li>\n    <li>origin_country_code: country code for the origin; at this time only the 135 contiguous US markets are available, must be ‘USA’, required</li>\n    <li>destination_country_code: country code for the destination; at this time only the 135 contiguous US markets are available, must be ‘USA’, required</li>\n  </ul>\n</ul>\n<p>\n            Here are the output fields returned in a successful call:\n            </p>\n<ul>\n  <li>lane_scores: A list objects that contain the output information associated with the valid requested lanes\n                <ul><li>lane_id: the unique identifier sent in the corresponding call</li><li>data_timestamp: the date for which the data in the response was calculated</li><li>origin:the 3 character airport code for the origin Key Market Area (KMA) provided in the API call by the client</li><li>origin_country_code: ‘USA’, will return an error if anything other than ‘USA’ is entered</li><li>destination: the 3 character airport code for the destination Key Market Area (KMA) provided in the API call by the client</li><li>destination_country_code: ‘USA’, will return an error if anything other than ‘USA’ is entered</li><li>equipment_type: the equipment_type provided in the API call by the client</li><li>lane_score: the Lane Score for the provided lane</li><li>capacity_indicator: a small bit of text explaning the Lane Score</li></ul></li>\n  <li>errors: a list of objects that contains information on lanes that are not valid for the request\n                <ul><li>lane_id: the unique identifier sent in the corresponding call</li><li>origin:the 3 character airport code for the origin Key Market Area (KMA) provided in the API call by the client</li><li>origin_country_code: ‘USA’</li><li>destination: the 3 character airport code for the destination Key Market Area (KMA) provided in the API call by the client</li><li>destination_country_code: ‘USA’</li><li>equipment_type: the equipment_type provided in the API call by the client</li><li>error: a specific  explanation of the issue with the lane information that caused the error</li></ul></li>\n</ul>",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "Request Object with 'startDate', 'endDate', and a list of 'lanes'. Lanes object contains: 'lane_id' (Customer defined), 'origin' (KMA Airport code), 'destination' (KMA Airport code), 'equipment_type' (REEFER/VAN)",
            "schema": {
              "$ref": "#/definitions/LaneScoreAverageRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/LaneScoreAverageResponse"
              }
            }
          }
        }
      }
    },
    "/truckload/rates/trac_forecast_daily": {
      "post": {
        "tags": [
          "Truckload"
        ],
        "summary": "TRAC KMA Daily Forecast",
        "description": "This endpoint allows permissioned users to call and return our SONAR TRAC daily spot rate forecast at a KMA (Key Market Area) to KMA lane level. This forecast is available from 1 to 30 days out, and is completely overwritten every day with new forecast values based on the most up to date data points.\nOD pairs are defined by Market Airport Codes. A comprehensive list of KMAs, their airport codes, and the zip3’s associated with those KMA’s can be found by calling the KMA Reference List endpoint located under the “Lookup” menu. Additionally, the Zip3 Specific endpoint (also located under the Lookup tab), will return the airport code associated with a zip3 under the “qualifier” header (along with the reference city and state).\nYou can click on the Body Sample to the right to populate the example in the test body below.\nFor more information about getting access to this endpoint or using this endpoint, please reach out to our Customer Success team (cs@gosonar.com).\nThis endpoint handles the following input fields:\n<ul><li>start_date: the earliest date of the range over which the TRAC forecast is being requested. Must be between the current date and 30 days into the future. (YYYY-MM-DD); required</li><li>end_date: the furthest into the future date of the range over which the TRAC forecast is being requested. Must be between the current date and 30 days into the future (YYYY-MM-DD); required</li><li>lane_id: a unique identifier set by the client and will be returned with the response; required</li><li>origin: the 3 character airport code for the origin Key Market Area (KMA), required</li><li>origin_country_code: country code for the origin; at this time only the 135 contiguous US markets are available, must be ‘USA’, required</li><li>destination: the 3 character airport code for the destination Key Market Area (KMA), required</li><li>destination_country_code: country code for the destination; at this time, only the 135 contiguous US markets are available, must be ‘USA’; required</li><li>equipment_type: current only ‘VAN’ is available; required.</li><li>current_customer_rate: the current rate that the client is experiencing on the specified lane. Will be multiplied by the forecasted percent change to show the expected trend applied to the clients rates; optional.</li></ul><b>Here are the output fields returned in a successful call</b>:\n<ul><li>Lanes: A list object that contains the output information associated with the valid requested lanes.</li><li>lane_id: the unique identifier sent in the corresponding call.</li><li>data_timestamp: the date for which the rate is being forecasted</li><li>generated_on: the date on which the forecast was generated</li><li>origin: the 3 character airport code for the origin Key Market Area (KMA) provided in the API call by the client</li><li>origin_country_code: ‘USA’, will return an error if anything other than ‘USA’ is entered</li><li>destination: the 3 character airport code for the destination Key Market Area (KMA) provided in the API call by the client</li><li>destination_country_code: ‘USA’, will return an error if anything other than ‘USA’ is entered</li><li>equipment_type: the equipment_type provided in the API call by the client (for which the rates in the response apply)</li><li>current_customer_rate: the client’s current rate as specified in the API call.</li><li>forecast_index_value: the median forecasted percent change between the rate estimate corresponding to the data_timestamp and the current (yesterday’s) rate (ie. the direction and amount the current rate is expected to change by).</li><li>forecast_index_value_high: the high-end (75th percentile estimate) of the forecasted percent change between the rate estimate corresponding to the data_timestamp and the current (yesterday’s) rate (ie. the upper end of the direction and amount the current rate is expected to change by).</li><li>forecast_index_value_low: the low-end (25th percentile estimate) of the forecasted percent change between the rate estimate corresponding to the data_timestamp and the current (yesterday’s) rate (ie. the lower end of the direction and amount the current rate is expected to change by).</li><li>forecast_rpm_trac: the median total (linehaul plus fuel surcharge) forecasted rate-per-mile value that corresponds to the origin, destination, equipment_type and data_timestamp provided in the API call by the client, based on the most recent (yesterday’s) median TRAC spot rate.</li><li>forecast_rpm_trac_high: the high-end (75th percentile) total (linehaul plus fuel surcharge) forecasted rate-per-mile that corresponds to the origin, destination, equipment_type and data_timestamp provided in the API call by the client, based on the most recent (yesterday’s) median TRAC spot rate.</li><li>forecast_rpm_trac_low: the low-end (25th percentile) total (linehaul plus fuel surcharge) forecasted rate-per-mile that corresponds to the origin, destination, equipment_type and data_timestamp provided in the API call by the client, based on the most recent (yesterday’s) median TRAC spot rate.</li><li>forecast_customer_rate: the median total (linehaul plus fuel surcharge) forecasted rate that corresponds to the origin, destination, equipment_type and data_timestamp provided in the API call by the client, based on the current_customer_rate provided in the API request by the client.</li><li>forecast_customer_rate_high: the high-end (75th percentile) total (linehaul plus fuel surcharge) forecasted rate that corresponds to the origin, destination, equipment_type and data_timestamp provided in the API call by the client, based on the current_customer_rate provided in the API request by the client.</li><li>forecast_customer_rate_low: the low-end (25th percentile) total (linehaul plus fuel surcharge) forecasted rate that corresponds to the origin, destination, equipment_type and data_timestamp provided in the API call by the client, based on the current_customer_rate provided in the API request by the client.</li><li>Errors: a list object that contains information on lanes that are not valid for the rate request.</li><li>lane_id: the unique identifier sent in the corresponding call.</li><li>origin: the 3 character airport code for the origin Key Market Area (KMA) provided in the API call by the client</li><li>origin_country_code: ‘USA’</li><li>destination: the 3 character airport code for the destination Key Market Area (KMA) provided in the API call by the client</li><li>destination_country_code: ‘USA’</li><li>error_found: A lane/date/equipment specific explanation of the issue with the lane information that caused an error.</li></ul>",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/ForecastRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ForecastResponse"
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/truckload/rates/trac_forecast_weekly": {
      "post": {
        "tags": [
          "Truckload"
        ],
        "summary": "TRAC KMA Weekly Forecast",
        "description": "This endpoint allows permissioned users to call and return our SONAR TRAC weekly spot rate forecast at a KMA (Key Market Area) to KMA lane level. This forecast is available from 1 to 52 weeks out, and is completely overwritten every week on Sundays with new forecast values based on the most recent data points available.\nOD pairs are defined by Market Airport Codes. A comprehensive list of KMAs, their airport codes, and the zip3’s associated with those KMAs can be found by calling the KMA Reference List endpoint located under the “Lookup” menu. Additionally, the Zip3 Specific endpoint (also located under the Lookup tab), will return the airport code associated with a zip3 under the “qualifier” header (along with the reference city and state).\nThe date range between start and end dates MUST contain at least one Sunday, as that is the date to which the weekly forecasts correspond.\nYou can click on the Body Sample to the right to populate the example in the test body below.\nFor more information about getting access to this endpoint or using this endpoint, please reach out to our Customer Success team (cs@gosonar.com).\nThis endpoint handles the following input fields:\n<ul><li>start_date: the earliest date of the range over which the TRAC forecast is being requested. Must be between the current date and 52 weeks into the future. (YYYY-MM-DD); required</li><li>end_date: the furthest into the future date of the range over which the TRAC forecast is being requested. Must be between the current date and 52 weeks into the future (YYYY-MM-DD); required</li><li>lane_id: a unique identifier set by the client and will be returned with the response; required</li><li>origin: the 3 character airport code for the origin Key Market Area (KMA), required</li><li>origin_country_code: country code for the origin; at this time only the 135 contiguous US markets are available, must be ‘USA’, required</li><li>destination: the 3 character airport code for the destination Key Market Area (KMA), required</li><li>destination_country_code: country code for the destination; at this time, only the 135 contiguous US markets are available, must be ‘USA’; required</li><li>equipment_type: current only ‘VAN’ is available; required.</li><li>current_customer_rate: the current rate that the client is experiencing on the specified lane. Will be multiplied by the forecasted percent change to show the expected trend applied to the clients rates; optional.</li></ul><b>Here are the output fields returned in a successful call:</b><ul><li>Lanes: A list object that contains the output information associated with the valid requested lanes.</li><li>lane_id: the unique identifier sent in the corresponding call.</li><li>data_timestamp: the date corresponding to the Sunday of the week for which the rate is being forecasted</li><li>generated_on: the date on which the forecast was generated</li><li>origin: the 3 character airport code for the origin Key Market Area (KMA) provided in the API call by the client</li><li>origin_country_code: ‘USA’, will return an error if anything other than ‘USA’ is entered</li><li>destination: the 3 character airport code for the destination Key Market Area (KMA) provided in the API call by the client</li><li>destination_country_code: ‘USA’, will return an error if anything other than ‘USA’ is entered</li><li>equipment_type: the equipment_type provided in the API call by the client (for which the rates in the response apply)</li><li>current_customer_rate: the client’s current rate as specified in the API call.</li><li>forecast_index_value: the median forecasted percent change between the rate estimate corresponding to the data_timestamp and the current (yesterday’s) rate (ie. the direction and amount the current rate is expected to change by).</li><li>forecast_index_value_high: the high-end (75th percentile estimate) of the forecasted percent change between the rate estimate corresponding to the data_timestamp and the current (yesterday’s) rate (ie. the upper end of the direction and amount the current rate is expected to change by).</li><li>forecast_index_value_low: the low-end (25th percentile estimate) of the forecasted percent change between the rate estimate corresponding to the data_timestamp and the current (yesterday’s) rate (ie. the lower end of the direction and amount the current rate is expected to change by).</li><li>forecast_rpm_trac: the median total (linehaul plus fuel surcharge) forecasted rate-per-mile value that corresponds to the origin, destination, equipment_type and data_timestamp provided in the API call by the client, based on the most recent (yesterday’s) median TRAC spot rate.</li><li>forecast_rpm_trac_high: the high-end (75th percentile) total (linehaul plus fuel surcharge) forecasted rate-per-mile that corresponds to the origin, destination, equipment_type and data_timestamp provided in the API call by the client, based on the most recent (yesterday’s) median TRAC spot rate.</li><li>forecast_rpm_trac_low: the low-end (25th percentile) total (linehaul plus fuel surcharge) forecasted rate-per-mile that corresponds to the origin, destination, equipment_type and data_timestamp provided in the API call by the client, based on the most recent (yesterday’s) median TRAC spot rate.</li><li>forecast_customer_rate: the median total (linehaul plus fuel surcharge) forecasted rate that corresponds to the origin, destination, equipment_type and data_timestamp provided in the API call by the client, based on the current_customer_rate provided in the API request by the client.</li><li>forecast_customer_rate_high: the high-end (75th percentile) total (linehaul plus fuel surcharge) forecasted rate that corresponds to the origin, destination, equipment_type and data_timestamp provided in the API call by the client, based on the current_customer_rate provided in the API request by the client.</li><li>forecast_customer_rate_low: the low-end (25th percentile) total (linehaul plus fuel surcharge) forecasted rate that corresponds to the origin, destination, equipment_type and data_timestamp provided in the API call by the client, based on the current_customer_rate provided in the API request by the client.</li><li>Errors: a list object that contains information on lanes that are not valid for the rate request.</li><li>lane_id: the unique identifier sent in the corresponding call.</li><li>origin: the 3 character airport code for the origin Key Market Area (KMA) provided in the API call by the client</li><li>origin_country_code: ‘USA’</li><li>destination: the 3 character airport code for the destination Key Market Area (KMA) provided in the API call by the client</li><li>destination_country_code: ‘USA’</li><li>error_found: A lane/date/equipment specific explanation of the issue with the lane information that caused an error.</li></ul>",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/ForecastRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ForecastResponse"
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/truckload/rates/mytrac/get_bulk_target_rates": {
      "post": {
        "tags": [
          "Truckload"
        ],
        "summary": "myTRAC Rate",
        "description": "<p>This endpoint allows permissioned users under TRAC contributor Organizations  to call and return the SONAR myTRAC rates based on their Organization’s TRAC data. Our rate data is updated daily,\n            to produce the myTRAC rate we use a 14 day lookback period for all the load transactions within a contributor's data to get them their benchmark rate on the lane vs the rest of the consortium.\n            If there aren’t at least 3 load transactions in that lookback we then use 90 days, if there aren’t 3 load transactions in that time period we can’t produce a rate and you will receive a 204\n            No Content response.</p>\n<p>OD pairs are defined by Zip3’s with Van and Reefer being the two equipment types currently supported now, with plans to add Flatbed in the future. Multiple lanes can be sent in a single request.\n            You can click on the Body Sample to the right to populate the example in the test body below.</p>\n<p>For more information about getting access to this endpoint or using this endpoint, please reach out to our Customer Success team (cs@gosonar.com). To become a TRAC contributor,\n            email bd@gosonar.com.</p>\n            This endpoint handles the following input fields:\n            <ul><li>date: the date for which the myTRAC rate is being requested.(YYYY-MM-DD); required</li><li>origin: the postal/zip code for the origin point including leading zero(s); the first three digits of the zip code are all that is required and currently used, but the full zip code is accepted; required</li><li>destination: the postal/zip code for the destination point including leading zero(s); the first three digits of the zip code are all that is required and currently used, but the full zip code is accepted; required</li><li>equipment_type: will be ‘VAN’ or ‘REEFER’; required</li><li>lane_id: a unique identifier set by the client and will be returned with the response; optional</li></ul><b>​Here are the output fields returned in a successful call:</b><ul><li>successful_lane_responses: A list object that contains the output information associated with the valid requested lanes.</li><li>lane_id: the unique identifier provided in the request by the client for the lane.</li><li>od_pair: the origin and destination zip3 pair for the lane (i.e. 606-303)</li><li>origin: the origin provided for the lane.</li><li>destination: the destination provided for the lane.</li><li>current_trac_miles: the TRAC effective miles for the lane.</li><li>current_trac_rpm_adj:  the TRAC RPM, adjusted to the client’s average mileage.</li><li>current_trac_rate_adj: the TRAC Rate,  adjusted to the client’s average mileage.</li><li>avg_diff_rpm: the average difference between TRAC RPM and the client’s RPM.</li><li>avg_diff_rate:  the average difference between TRAC Rate and the client’s Rate.</li><li>avg_miles: the client’s average miles on the lane.</li><li>lookback: the number of days used as a lookback period for a client’s TRAC load transactions to derive the myTRAC rate. This will be 14 days if a minimum of 3 transactions are found, if not it will back out to 90 days with the same 3 transaction minimum. </li><li>num_transactions: the number of load transactions found in the lookback period used to derive the myTRAC rate for the lane.</li><li>my_trac_rate: the client’s myTRAC flat rate for the lane derived from the load transactions found in the lookback period. </li><li>my_trac_rpm: the client’s myTRAC rate per mile for the lane derived from the load transactions found in the lookback period.</li><li>data_timestamp: the date in the request for the myTRAC rate.</li><li>generated_on: the date the myTRAC rate for the lane was calculated on.</li></ul>",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/MyTracRateBulkRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/MyTracRateBulkResponse"
            }
          }
        }
      }
    },
    "/truckload/coverage_guide": {
      "post": {
        "tags": [
          "Truckload"
        ],
        "summary": "Coverage Guide",
        "description": "<p>\n            This endpoint allows permissioned users to get the coverage guide for a set of lanes.\n            </p>\n<p>\n            You can click on the Body Sample to the right to populate the example in the test body below.\n            </p>\n<p>\n            For more information about getting access to this endpoint or using this endpoint, please reach out to our Customer Success team (cs@gosonar.com).\n            </p>\n<p>\n            This endpoint handles the following input fields:\n            </p>\n<ul>\n  <li>lanes: A list object that contains the input information associated with the lanes\n                <ul><li>lane_id: an optional identifier that will be returned with the associated response object</li><li>origin_type: currently only accepts 'zip'</li><li>origin: currently only accepts a zip code with at least 3 digits</li><li>origin_country_code: currently only accepts 'USA'</li><li>destination_type: currently only accepts 'zip'</li><li>destination: currently only accepts a zip code with at least 3 digits</li><li>destination_country_code: currently only accepts 'USA'</li><li>equipment_type: currently accepts 'VAN', 'REEFER', or 'FLATBED'</li><li>input_miles: optional integer number of miles, if left off a distance will be calculated based on the origin and destination</li></ul></li>\n</ul>\n<p>\n            Here are the output fields returned in a successful call:\n            </p>\n<ul>\n  <li>lanes: A list object that contains the output information associated with the valid requested lanes\n                <ul><li>lane_id: the identifier sent in the corresponding request</li><li>data_timestamp: date of the latest spot rate data</li><li>generated_on: date the coverage guide was generated</li><li>origin: zip code</li><li>origin_market: KMA associated with the origin zip code</li><li>origin_country_code: country code</li><li>destination: zip code</li><li>destination_market: KMA associated with the destination zip code</li><li>destination_country_code: country code</li><li>equipment_type: equipment type</li><li>miles: the distance between the origin and destination either provided in the request or calculated based on the origin and destination</li><li>rpm: latest TRAC rpm for the lane</li><li>rpm_high: latest high TRAC rpm for the lane</li><li>rpm_low: latest low TRAC rpm for the lane</li><li>rate: latest TRAC rate for the lane</li><li>rate_high: latest high TRAC rate for the lane</li><li>rate_low: latest low TRAC rate for the lane</li><li>confidence_score: confidence score associated with the TRAC data for this lane</li><li>myTRAC_rate: myTRAC rate for the lane (org must be entitled to myTRAC and data must exist for the lane)</li><li>myTRAC_rpm: myTRAC rpm for the lane (org must be entitled to myTRAC and data must exist for the lane)</li><li>outbound_tender_rejection_percent: latest tender rejection at the origin</li><li>current_capacity_condition: description of current conditions</li><li>directional_capacity_change: description of the directional conditions over the last week</li><li>coverage_difficulty_score: combination of current and directional conditions showing how difficult a lane is to cover, 9 being most difficult</li><li>coverage_guidance: coverage guidance</li></ul></li>\n  <li>errors: a list object that contains information on lanes that we are unable to return a coverage guide for\n                <ul><li>original_lane: the request that produced the error</li><li>error_found: description of the error</li></ul></li>\n</ul>",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/CoverageGuideApiRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/CoverageGuideApiLaneResponse"
            }
          }
        }
      }
    },
    "/v2/truckload/rates/contract": {
      "post": {
        "tags": [
          "Truckload V2"
        ],
        "summary": "Contract Rates",
        "description": "<p>\n            This endpoint allows permissioned users to get our SONAR KMA contract rates, adjusted to various types of geographical input lanes. Our rate data is being updated weekly and OD pairs can be defined with market airport codes, Zip3 or Zip5, supporting any combination. If input miles are not speceified int he request, they will be calculated and all rates returned will be adjusted to the lane's specific mileage.\n            </p>\n<p>\n            A comprehensive list of KMAs, their airport codes, and the zip3’s associated with those KMA’s can be found by calling the KMA Reference List endpoint located under the “Lookup” menu. Additionally, the Zip3 Specific endpoint (also located under the Lookup tab), will return the airport code associated with a zip3 under the “qualifier” header (along with the reference city and state).\n            </p>\n<p>\n            You can click on the Body Sample to the right to populate the example in the test body below.\n            </p>\n<p>\n            For more information about getting access to this endpoint or using this endpoint, please reach out to our Customer Success team (cs@gosonar.com).\n            </p>\n<p>\n            This endpoint handles the following input fields:\n            </p>\n<ul>\n  <li>start_date: the earliest date of the range over which the rate is being requested (YYYY-MM-DD), required</li>\n  <li>end_date: the  most recent date of the range over which the rate is being requested (YYYY-MM-DD), required</li>\n  <li>lane_id: a unique identifier set by the client and will be returned with the response; optional field, not required</li>\n  <li>origin: the 3 character KMA airport code, Zip3 or Zip5 for USA, Zip3 or Zip6 for CAN the origin, required</li>\n  <li>origin_country_code: country code for the origin; at this time only lanes within the contiguous US markets and Canada are available, must be ‘USA’ or ‘CAN’, required</li>\n  <li>destination: the 3 character KMA airport code, Zip3 or Zip5 for USA, Zip3 or Zip6 for CAN the origin, required</li>\n  <li>destination_country_code: country code for the destination; at this time only lanes within the contiguous US markets and Canada are available, must be ‘USA’ or ‘CAN’, required</li>\n  <li>equipment_type: may be ‘VAN’ or ‘REEFER’ for USA, 'VAN' only for CAN, required</li>\n  <li>input_miles: the specific lane miles the rates will be adjusted to; this field is optional but must not be negative and will be calculated if not provided, not required</li>\n</ul>\n<p>\n            Here are the output fields returned in a successful call:\n            </p>\n<ul>\n  <li>Lanes: A list object that contains the output information associated with the valid requested lanes\n                <ul><li>lane_id: the unique identifier sent in the corresponding call</li><li>miles: the mileage for the rate</li><li>mileage_type: the type of mileage used, either input or calculated</li><li>origin: the Zip3/Zip5 or 3 character airport code for the lane origin, as provided in the request</li><li>origin_market: the 3 character airport code for the origin Key Market Area (KMA)</li><li>origin_country_code: the 3 character country code the for origin, 'USA'</li><li>destination: the Zip3/Zip5 or 3 character airport code for the lane destination, as provided in the request</li><li>destination_market: the 3 character airport code for the destination Key Market Area (KMA) provided in the API call by the client</li><li>destination_country_code: The 3 character country code the for destination, 'USA'</li><li>equipment_type: the equipment_type provided in the API call by the client (for which the rates in the response apply)</li><li>data_timestamp: the date for which the data in the response was calculated (ie: the date to which the rates in the response were applicable)</li><li>generated_on: the date the data in the response was generated</li><li>rpm: the median rate-per-mile (fuel included)</li><li>rpm_high: the high-end (67th percentile) total (linehaul plus fuel surcharge) rate-per-mile that corresponds to the origin, destination, equipment_type and data_timestamp provided in the API call by the client</li><li>rpm_low: the low-end (33rd percentile) total (linehaul plus fuel surcharge) rate-per-mile that corresponds to the origin, destination, equipment_type and data_timestamp provided in the API call by the client</li><li>rate: the median total (linehaul plus fuel surcharge) rate that corresponds to the origin, destination, equipment_type and data_timestamp provided in the API call by the client</li><li>rate_high: the high-end (67th percentile) total (linehaul plus fuel surcharge) rate that corresponds to the origin, destination, equipment_type and data_timestamp provided in the API call by the client</li><li>rate_low: the low-end (33rd percentile) total (linehaul plus fuel surcharge) rate that corresponds to the origin, destination, equipment_type and data_timestamp provided in the API call by the client</li><li>fuel_surcharge_rpm: the estimated fuel surcharge cost per mile calculated using (DOE.USA-1.2)/6.5mpg that corresponds to the data timestamp</li><li>confidence_score: ranges from 1 to 5 with 1 indicating the lowest confidence level and 5 the highest. It is based on how similar the analyzed load set is to the specified time and origin/destination parameters</li><li>origin_radius_expansion: the number of miles away from the edge of the origin KMA we had to expand in order to gather the requisite data to produce the rate. Origin and destination expansion occurs at the same rate</li><li>destination_radius_expansion: the number of miles away from the edge of the destination KMA we had to expand in order to gather the requisite data to produce the rate. Origin and destination expansion occurs at the same rate</li><li>timeframe_expansion: all rates are produced using a fixed 90 day lookback period</li><li>total_load_count: the total number of loads aggregated to calculate the rate; is not weighted</li><li>total_shipper_count: the total number of shippers whose data was aggregated in order to produce a rate</li></ul></li>\n  <li>Errors: a list object that contains information on lanes that are not valid for the rate request\n                <ul><li>lane_id: the unique identifier sent in the corresponding call</li><li>origin: the origin string provided in the request</li><li>origin_country_code: ‘USA’</li><li>destination: the destination string provided in the request</li><li>destination_country_code: ‘USA’</li><li>equipment_type: the equipment_type provided in the API call by the client</li><li>input_miles: the miles provided by the user in the request or calculated (if origin and destination iputs were valid)</li><li>error_found: A lane/date/equipment specific  explanation of the issue with the lane information that caused an error</li></ul></li>\n</ul>",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "Request Object with 'start_date', 'end_date', and a list of 'lanes' objects. Lanes object contains: 'lane_id' (Customer defined), 'origin' (KMA Airport code), 'origin_country_code', 'destination' (KMA Airport Code), 'destination_country_code', 'equipment_type' (REEFER/VAN/FLATBED)",
            "schema": {
              "$ref": "#/definitions/KMAContractRateRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/KMAContractRateResponse"
            }
          }
        }
      }
    },
    "/v2/truckload/rates/trac": {
      "post": {
        "tags": [
          "Truckload V2"
        ],
        "summary": "TRAC Rates",
        "description": "<p>\n            This endpoint allows permissioned users to get our SONAR KMA TRAC spot rates, adjusted to various types of geographical input lanes. Our rate data is being updated daily and OD pairs can be defined with market airport codes, Zip3 or Zip5, supporting any combination. If input miles are not speceified int he request, they will be calculated and all rates returned will be adjusted to the lane's specific mileage.\n            </p>\n<p>\n            A comprehensive list of KMAs, their airport codes, and the zip3’s associated with those KMA’s can be found by calling the KMA Reference List endpoint located under the “Lookup” menu. Additionally, the Zip3 Specific endpoint (also located under the Lookup tab), will return the airport code associated with a zip3 under the “qualifier” header (along with the reference city and state).\n            </p>\n<p>\n            You can click on the Body Sample to the right to populate the example in the test body below.\n            </p>\n<p>\n            For more information about getting access to this endpoint or using this endpoint, please reach out to our Customer Success team (cs@gosonar.com).\n            </p>\n<p>\n            This endpoint handles the following input fields:\n            </p>\n<ul>\n  <li>start_date: the earliest date of the range over which the rate is being requested (YYYY-MM-DD), required</li>\n  <li>end_date: the  most recent date of the range over which the rate is being requested (YYYY-MM-DD), required</li>\n  <li>lane_id: a unique identifier set by the client and will be returned with the response; optional field, not required</li>\n  <li>origin: the 3 character KMA airport code, Zip3 or Zip5 for the origin, required</li>\n  <li>origin_country_code: country code for the origin; at this time only lanes within the contiguous US markets are available, must be ‘USA’, required</li>\n  <li>destination: the 3 character KMA airport code, Zip3 or Zip5 for the destination, required</li>\n  <li>destination_country_code: country code for the destination; at this time only lanes within the contiguous US markets are available, must be ‘USA’, required</li>\n  <li>equipment_type: may be ‘VAN’ or ‘REEFER’ or ‘FLATBED’, required</li>\n  <li>input_miles: the specific lane miles the rates will be adjusted to; this field is optional but must not be negative and will be calculated if not provided, not required</li>\n</ul>\n<p>\n            Here are the output fields returned in a successful call:\n            </p>\n<ul>\n  <li>Lanes: A list object that contains the output information associated with the valid requested lanes\n                <ul><li>lane_id: the unique identifier sent in the corresponding call</li><li>miles: the mileage for the rate</li><li>mileage_type: the type of mileage used, either input or calculated</li><li>origin: the Zip3/Zip5 or 3 character airport code for the lane origin, as provided in the request</li><li>origin_market: the 3 character airport code for the origin Key Market Area (KMA)</li><li>origin_country_code: the 3 character country code the for origin, 'USA'</li><li>destination: the Zip3/Zip5 or 3 character airport code for the lane destination, as provided in the request</li><li>destination_market: the 3 character airport code for the destination Key Market Area (KMA) provided in the API call by the client</li><li>destination_country_code: the 3 character country code the for destination, 'USA'</li><li>equipment_type: the equipment_type provided in the API call by the client (for which the rates in the response apply)</li><li>data_timestamp: the date for which the data in the response was calculated (ie: the date to which the rates in the response were applicable)</li><li>data_timestamp: the date for which the data in the response was calculated (ie: the date to which the rates in the response were applicable)</li><li>rpm: the median total (linehaul plus fuel surcharge) rate-per-mile that corresponds to the origin, destination, equipment_type and data_timestamp provided in the API call by the client</li><li>rpm_high: the high-end (67th percentile) total (linehaul plus fuel surcharge) rate-per-mile that corresponds to the origin, destination, equipment_type and data_timestamp provided in the API call by the client</li><li>rpm_low: the low-end (33rd percentile) total (linehaul plus fuel surcharge) rate-per-mile that corresponds to the origin, destination, equipment_type and data_timestamp provided in the API call by the client</li><li>rate: the median total (linehaul plus fuel surcharge) rate that corresponds to the origin, destination, equipment_type and data_timestamp provided in the API call by the client</li><li>rate_high: the high-end (67th percentile) total (linehaul plus fuel surcharge) rate that corresponds to the origin, destination, equipment_type and data_timestamp provided in the API call by the client</li><li>rate_low: the low-end (33rd percentile) total (linehaul plus fuel surcharge) rate that corresponds to the origin, destination, equipment_type and data_timestamp provided in the API call by the client</li><li>confidence_score: ranges from 1 to 5 with 1 indicating the lowest confidence level and 5 the highest. It is based on how similar the analyzed load set is to the specified time and origin/destination parameters</li><li>origin_radius_expansion: the number of miles away from the edge of the origin KMA we had to expand in order to gather the requisite data to produce the rate. Origin and destination expansion occurs at the same rate</li><li>destination_radius_expansion: the number of miles away from the edge of the destination KMA we had to expand in order to gather the requisite data to produce the rate. Origin and destination expansion occurs at the same rate</li><li>timeframe_expansion: all rates are produced with an initial lookback window of seven (7) days. The rates from those 7 days are weighted such that rates nearer to the data_timestamp carry more weight than rates further back in time. The number returned in this field is the number of additional days back the algorithm looked in order to gather the requisite data to produce the rate. This number will never be greater than 21</li><li>total_load_count: the total number of loads aggregated to calculate the rate; is not weighted</li><li>total_contributor_count: the total number of TRAC contributors (brokers) whose data was aggregated in order to produce a rate. This value will never be less than 5</li></ul></li>\n  <li>Errors: a list object that contains information on lanes that are not valid for the rate request\n                <ul><li>lane_id: the unique identifier sent in the corresponding call</li><li>origin: the origin string provided in the request</li><li>origin_country_code: ‘USA’</li><li>destination: the destination string provided in the request</li><li>destination_country_code: ‘USA’</li><li>equipment_type: the equipment_type provided in the API call by the client</li><li>input_miles: the miles provided by the user in the request or calculated (if origin and destination iputs were valid)</li><li>error_found: A lane/date/equipment specific  explanation of the issue with the lane information that caused an error</li></ul></li>\n</ul>",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "Request Object with 'start_date', 'end_date', and a list of 'lanes' objects. Lanes object contains: 'lane_id' (Customer defined), 'origin' (KMA Airport code), 'origin_country_code', 'destination' (KMA Airport Code), 'destination_country_code', 'equipment_type' (REEFER/VAN/FLATBED)",
            "schema": {
              "$ref": "#/definitions/TracRateJsonRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/TracRateJsonResponse"
            }
          }
        }
      }
    },
    "/v2/truckload/rates/trac/forecast": {
      "post": {
        "tags": [
          "Truckload V2"
        ],
        "summary": "TRAC Forecast Rates",
        "description": "<p>\n            This endpoint allows permissioned users to retrieve SONAR KMA TRAC forecast rates for specified lanes over a defined date range.\n            The forecast data is derived from historical TRAC spot rate patterns and provides estimates of future pricing trends based on market conditions, seasonal factors, and load behavior.\n            </p>\n<p>\n            Forecast data supports retrieving both historical and future forecasts spanning up to 365 days.\n            The date range can extend from 2024-01-01 through one year beyond the current date, with a maximum span of 365 days between start_date and end_date.\n            This enables backtesting scenarios using historical forecast data alongside current data.\n            Each lane request must include valid origin/destination pairs defined by KMA airport codes, Zip3, or Zip5.\n            The system will validate that all input lanes are within supported markets (contiguous US only).\n            </p>\n<p>\n            A comprehensive list of KMAs, their airport codes, and the zip3's associated with those KMA's can be found by calling the KMA Reference List endpoint located under the \"Lookup\" menu.\n            Additionally, the Zip3 Specific endpoint (also located under the Lookup tab), will return the airport code associated with a zip3 under the \"qualifier\" header (along with the reference city and state).\n            </p>\n<p>\n            You can click on the Body Sample to the right to populate the example in the test body below.\n            </p>\n<p>\n            For more information about getting access to this endpoint or using this endpoint, please reach out to our Customer Success team (cs@gosonar.com).\n            </p>\n<p>\n            This endpoint handles the following input fields:\n            </p>\n<ul>\n  <li>start_date: the earliest date of the forecast range (YYYY-MM-DD), must be on or after 2024-01-01, required</li>\n  <li>end_date: the latest date of the forecast range (YYYY-MM-DD), must be within 365 days of start_date and cannot exceed one year from today, required</li>\n  <li>lanes: an array of lane objects, each containing:\n                <ul><li>lane_id: a unique identifier set by the client and will be returned with the response; optional field, not required</li><li>origin: the 3 character KMA airport code, Zip3 or Zip5 for the origin, required</li><li>origin_country_code: country code for the origin; at this time only lanes within the contiguous US markets are available, must be ‘USA’, required</li><li>destination: the 3 character KMA airport code, Zip3 or Zip5 for the destination, required</li><li>destination_country_code: country code for the destination; at this time only lanes within the contiguous US markets are available, must be ‘USA’, required</li><li>equipment_type: may be ‘VAN’ or ‘REEFER’ or ‘FLATBED’, required</li><li>current_customer_rate: current rate (rpm or all-in) the customer is using on the lane. Optional.</li><li>input_miles: customer's specific mileage for the lane, optional. Will use SONAR internal mileage system if not set.</li></ul></li>\n</ul>\n<p>\n            Here are the output fields returned in a successful call:\n            </p>\n<ul>\n  <li>Lanes: A list object that contains the forecast information associated with the valid requested lanes\n                <ul><li>lane_id: the unique identifier sent in the corresponding call</li><li>origin: the Zip3/Zip5 or 3 character airport code for the lane origin, as provided in the request</li><li>origin_country_code: the 3 character country code the for origin, 'USA'</li><li>destination: the Zip3/Zip5 or 3 character airport code for the lane destination, as provided in the request</li><li>destination_country_code: the 3 character country code the for destination, 'USA'</li><li>equipment_type: the equipment_type provided in the API call by the client (for which the forecast applies)</li><li>lane_id: the unique lane id provided in the request</li><li>mileage_type: \"INTERNAL\" or \"INPUT\", depending on if `input_miles` was provided in the request</li><li>miles: mileage for the lane (provided or calculated)</li><li>current_customer_rate: the customer's rate provided in the request</li><li>forecast_index_value: position</li><li>forecast_rpm_trac: trac forecast rpm</li><li>forecast_rate_customer: the seasonal forecast for the customer's lane, if they provided a starting rate.</li></ul></li>\n  <li>Errors: a list object that contains information on lanes that are not valid for the forecast request\n                <ul><li>original_lane: the lane from the request body</li><li>error_found: A lane/date/equipment specific explanation of the issue with the lane information that caused an error</li></ul></li>\n</ul>",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "Request Object with 'start_date', 'end_date', and a list of 'lanes' objects. Lanes object contains: 'lane_id' (Customer defined), 'origin' (KMA Airport code), 'origin_country_code', 'destination' (KMA Airport Code), 'destination_country_code', 'equipment_type' (REEFER/VAN/FLATBED)",
            "schema": {
              "$ref": "#/definitions/ForecastRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/SimpleForecastResponse"
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/v2/truckload/capacity/sonar_lane_scores": {
      "post": {
        "tags": [
          "Truckload V2"
        ],
        "summary": "SONAR Lane Scores",
        "description": "<p>\n            This endpoint allows permissioned users to call and return our SONAR Lane Scores, adjusted to various types of geographical input lanes. The scores provided in this endpoint measure the balance of the flow of capacity in a lane. Outbound heavy lanes are scored lower while lanes that originate in areas with heavy inbound score higher. SONAR Lane Scores are updated daily, the scores provided in this endpoint are an average based on the start and end date in the request. If you'd like to get a lane score for a single point in time you can make the start and end dates the same.\n            OD pairs can be defined with market airport codes, Zip3 or Zip5, supporting any combination. If input miles are not speceified int he request, they will be calculated and all rates returned will be adjusted to the lane's specific mileage.\n            </p>\n<p>\n            A comprehensive list of KMAs, their airport codes, and the zip3’s associated with those KMA’s can be found by calling the KMA Reference List endpoint located under the “Lookup” menu. Additionally, the Zip3 Specific endpoint (also located under the Lookup tab) will return the airport code associated with a zip3 under the “qualifier” header (along with the reference city and state).\n            </p>\n<p>\n            You can click on the Body Sample to the right to populate the example in the test body below.\n            </p>\n<p>\n            For more information about getting access to this endpoint or using this endpoint, please reach out to our Customer Success team (cs@gosonar.com).\n            </p>\n<p>\n            Returns lane scores based off of SONAR internal metrics. This endpoint handles the following input fields:\n            </p>\n<ul>\n  <li>start_date: the start date of the range over which the Lane Scores are being requested (YYYY-MM-DD); required field</li>\n  <li>end_date: the end date of the range over which the Lane Scores are being requested (YYYY-MM-DD); required field</li>\n  <li>lanes: an embedded list of the following fields:</li>\n  <ul>\n    <li>lane_id: a unique identifier set by the client and will be returned with the response; optional</li>\n    <li>origin: the 3 character KMA airport code, Zip3 or Zip5 for the origin, required</li>\n    <li>destination: the 3 character KMA airport code, Zip3 or Zip5 for the destination, required</li>\n    <li>equipment_type: must  be ‘VAN’ or ‘REEFER’; required</li>\n    <li>origin_country_code: country code for the origin; at this time only the 135 contiguous US markets are available, must be ‘USA’, required</li>\n    <li>destination_country_code: country code for the destination; at this time only the 135 contiguous US markets are available, must be ‘USA’, required</li>\n  </ul>\n</ul>\n<p>\n            Here are the output fields returned in a successful call:\n            </p>\n<ul>\n  <li>lanes: A list objects that contain the output information associated with the valid requested lanes\n                <ul><li>lane_id: the unique identifier sent in the corresponding call</li><li>data_timestamp: the date for which the data in the response was calculated</li><li>origin: the Zip3/Zip5 or 3 character airport code for the lane origin, as provided in the request</li><li>origin_market: the 3 character airport code for the origin Key Market Area (KMA)</li><li>origin_country_code: ‘USA’, will return an error if anything other than ‘USA’ is entered</li><li>destination: the Zip3/Zip5 or 3 character airport code for the lane destination, as provided in the request</li><li>destination_market: the 3 character airport code for the destination Key Market Area (KMA) provided in the API call by the client</li><li>destination_country_code: ‘USA’, will return an error if anything other than ‘USA’ is entered</li><li>equipment_type: the equipment_type provided in the API call by the client</li><li>lane_score: the Lane Score for the provided lane</li><li>capacity_indicator: a small bit of text explaning the Lane Score</li></ul></li>\n  <li>errors: a list of objects that contains information on lanes that are not valid for the request\n                <ul><li>lane_id: the unique identifier sent in the corresponding call</li><li>origin:the 3 character airport code for the origin Key Market Area (KMA) provided in the API call by the client</li><li>origin_country_code: ‘USA’</li><li>destination: the 3 character airport code for the destination Key Market Area (KMA) provided in the API call by the client</li><li>destination_country_code: ‘USA’</li><li>equipment_type: the equipment_type provided in the API call by the client</li><li>error: a specific  explanation of the issue with the lane information that caused the error</li></ul></li>\n</ul>",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "Request Object with 'startDate', 'endDate', and a list of 'lanes'. Lanes object contains: 'lane_id' (Customer defined), 'origin' (KMA Airport code), 'destination' (KMA Airport code), 'equipment_type' (REEFER/VAN)",
            "schema": {
              "$ref": "#/definitions/LaneScoreJsonRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/LaneScoreJsonResponse"
            }
          }
        }
      }
    },
    "/v2/truckload/rates/trac/statistics": {
      "post": {
        "tags": [
          "Truckload V2"
        ],
        "summary": "TRAC Rate Statistics",
        "description": "<p>\n            This endpoint allows permissioned users to get statistical aggregations (min, median, average, max, count) of TRAC spot rates\n            over specified time periods. The statistics can be aggregated by various time periods including summary (all rates in range),\n            weekly, monthly, quarterly, yearly, or week-to-date.\n            </p>\n<p>\n            OD pairs can be defined with market airport codes, Zip3 or Zip5, supporting any combination. If input miles are not specified\n            in the request, they will be calculated and all rates returned will be adjusted to the lane's specific mileage.\n            </p>\n<p>\n            A comprehensive list of KMAs, their airport codes, and the zip3's associated with those KMA's can be found by calling the\n            KMA Reference List endpoint located under the \"Lookup\" menu. Additionally, the Zip3 Specific endpoint (also located under the\n            Lookup tab), will return the airport code associated with a zip3 under the \"qualifier\" header (along with the reference city and state).\n            </p>\n<p>\n            You can click on the Body Sample to the right to populate the example in the test body below.\n            </p>\n<p>\n            For more information about getting access to this endpoint or using this endpoint, please reach out to our Customer Success team (cs@gosonar.com).\n            </p>\n<p>\n            This endpoint handles the following input fields:\n            </p>\n<ul>\n  <li>start_date: the earliest date of the range over which statistics are being requested (YYYY-MM-DD), required</li>\n  <li>end_date: the most recent date of the range over which statistics are being requested (YYYY-MM-DD), required</li>\n  <li>aggregation: time period for aggregation - 'SUMMARY', 'WEEKLY', 'MONTHLY', 'QUARTERLY', 'YEARLY', or 'WTD' (week-to-date), required</li>\n  <li>lane_id: a unique identifier set by the client and will be returned with the response; optional field, not required</li>\n  <li>origin: the 3 character KMA airport code, Zip3 or Zip5 for the origin, required</li>\n  <li>origin_country_code: country code for the origin; at this time only lanes within the contiguous US markets are available, must be 'USA', required</li>\n  <li>destination: the 3 character KMA airport code, Zip3 or Zip5 for the destination, required</li>\n  <li>destination_country_code: country code for the destination; at this time only lanes within the contiguous US markets are available, must be 'USA', required</li>\n  <li>equipment_type: may be 'VAN' or 'REEFER' or 'FLATBED', required</li>\n  <li>input_miles: the specific lane miles the rates will be adjusted to; this field is optional but must not be negative and will be calculated if not provided, not required</li>\n</ul>\n<p>\n            Here are the output fields returned in a successful call:\n            </p>\n<ul>\n  <li>lanes: A list object that contains the output information associated with the valid requested lanes\n                <ul><li>lane_id: the unique identifier sent in the corresponding call</li><li>miles: the mileage for the rate</li><li>mileage_type: the type of mileage used, either input or calculated</li><li>origin: the Zip3/Zip5 or 3 character airport code for the lane origin, as provided in the request</li><li>origin_market: the 3 character airport code for the origin Key Market Area (KMA)</li><li>origin_country_code: the 3 character country code the for origin, 'USA'</li><li>destination: the Zip3/Zip5 or 3 character airport code for the lane destination, as provided in the request</li><li>destination_market: the 3 character airport code for the destination Key Market Area (KMA)</li><li>destination_country_code: the 3 character country code the for destination, 'USA'</li><li>equipment_type: the equipment_type provided in the API call by the client (for which the statistics in the response apply)</li><li>data_timestamp: the date for which the data in the response was calculated</li><li>period_start_date: the start date for this statistical period</li><li>period_end_date: the end date for this statistical period</li><li>aggregation: the aggregation type used for this period (SUMMARY, WEEKLY, MONTHLY, QUARTERLY, YEARLY, or WTD)</li><li>lowest_rpm: the lowest (minimum) rate-per-mile value in the period</li><li>highest_rpm: the highest (maximum) rate-per-mile value in the period</li><li>std_dev_rpm: the standard deviation of rate-per-mile values in the period</li><li>lowest_rate: the lowest (minimum) total rate value in the period</li><li>highest_rate: the highest (maximum) total rate value in the period</li><li>std_dev_rate: the standard deviation of total rate values in the period</li><li>avg_rpm: the average rate-per-mile</li><li>avg_rpm_high: the average of the high-end (67th percentile) rate-per-mile values</li><li>avg_rpm_low: the average of the low-end (33rd percentile) rate-per-mile values</li><li>avg_rate: the average total rate</li><li>avg_rate_high: the average of the high-end (67th percentile) total rate values</li><li>avg_rate_low: the average of the low-end (33rd percentile) total rate values</li><li>avg_confidence_score: the average confidence score across all data points in the period</li><li>avg_origin_radius_expansion: the average number of miles away from the edge of the origin KMA that was expanded to gather data</li><li>avg_destination_radius_expansion: the average number of miles away from the edge of the destination KMA that was expanded to gather data</li><li>avg_timeframe_expansion: the average number of additional days back the algorithm looked to gather requisite data</li><li>avg_total_load_count: the average total number of loads aggregated to calculate the rates</li><li>avg_total_contributor_count: the average total number of TRAC contributors (brokers) whose data was aggregated</li></ul></li>\n  <li>errors: a list object that contains information on lanes that are not valid for the statistics request\n                <ul><li>lane_id: the unique identifier sent in the corresponding call</li><li>origin: the origin string provided in the request</li><li>origin_country_code: 'USA'</li><li>destination: the destination string provided in the request</li><li>destination_country_code: 'USA'</li><li>equipment_type: the equipment_type provided in the API call by the client</li><li>input_miles: the miles provided by the user in the request or calculated (if origin and destination inputs were valid)</li><li>error_found: A lane/date/equipment specific explanation of the issue with the lane information that caused an error</li></ul></li>\n</ul>",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "Request Object with 'start_date', 'end_date', 'aggregation', and a list of 'lanes' objects. Lanes object contains: 'lane_id' (Customer defined), 'origin' (KMA Airport code), 'origin_country_code', 'destination' (KMA Airport Code), 'destination_country_code', 'equipment_type' (REEFER/VAN/FLATBED), 'input_miles' (optional)",
            "schema": {
              "$ref": "#/definitions/TracRateStatisticsJsonRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/TracRateStatisticsResponse"
            }
          }
        }
      }
    },
    "/v2/truckload/rates/trac/forecast/statistics": {
      "post": {
        "tags": [
          "Truckload V2"
        ],
        "summary": "TRAC Forecast Statistics",
        "description": "<p>\n            This endpoint allows permissioned users to get statistical aggregations (min, median, average, max, standard deviation) of TRAC forecast rates\n            over specified time periods. The statistics can be aggregated by various time periods including summary (all forecasts in range),\n            weekly, monthly, quarterly, yearly, or week-to-date.\n            </p>\n<p>\n            The endpoint supports retrieving statistics for both historical and future forecasts. The date range can extend from 2024-01-01 through\n            one year beyond the current date, with a maximum span of 365 days between start_date and end_date. This enables backtesting scenarios\n            using historical forecast statistics alongside current data.\n            </p>\n<p>\n            OD pairs can be defined with market airport codes, Zip3 or Zip5, supporting any combination. If input miles are not specified\n            in the request, they will be calculated and all forecasts returned will be adjusted to the lane's specific mileage.\n            </p>\n<p>\n            A comprehensive list of KMAs, their airport codes, and the zip3's associated with those KMA's can be found by calling the\n            KMA Reference List endpoint located under the \"Lookup\" menu. Additionally, the Zip3 Specific endpoint (also located under the\n            Lookup tab), will return the airport code associated with a zip3 under the \"qualifier\" header (along with the reference city and state).\n            </p>\n<p>\n            You can click on the Body Sample to the right to populate the example in the test body below.\n            </p>\n<p>\n            For more information about getting access to this endpoint or using this endpoint, please reach out to our Customer Success team (cs@gosonar.com).\n            </p>\n<p>\n            This endpoint handles the following input fields:\n            </p>\n<ul>\n  <li>start_date: the earliest date of the range over which statistics are being requested (YYYY-MM-DD), must be on or after 2024-01-01, required</li>\n  <li>end_date: the most recent date of the range over which statistics are being requested (YYYY-MM-DD), must be within 365 days of start_date and cannot exceed one year from today, required</li>\n  <li>aggregation: time period for aggregation - 'SUMMARY', 'WEEKLY', 'MONTHLY', 'QUARTERLY', 'YEARLY', or 'WTD' (week-to-date), required</li>\n  <li>lane_id: a unique identifier set by the client and will be returned with the response; optional field, not required</li>\n  <li>origin: the 3 character KMA airport code, Zip3 or Zip5 for the origin, required</li>\n  <li>origin_country_code: country code for the origin; at this time only lanes within the contiguous US markets are available, must be 'USA', required</li>\n  <li>destination: the 3 character KMA airport code, Zip3 or Zip5 for the destination, required</li>\n  <li>destination_country_code: country code for the destination; at this time only lanes within the contiguous US markets are available, must be 'USA', required</li>\n  <li>equipment_type: may be 'VAN' or 'REEFER' or 'FLATBED', required</li>\n  <li>input_miles: the specific lane miles the forecasts will be adjusted to; this field is optional but must not be negative and will be calculated if not provided, not required</li>\n</ul>\n<p>\n            Here are the output fields returned in a successful call:\n            </p>\n<ul>\n  <li>lanes: A list object that contains the output information associated with the valid requested lanes\n                <ul><li>lane_id: the unique identifier sent in the corresponding call</li><li>miles: the mileage for the lane</li><li>mileage_type: the type of mileage used, either input or calculated</li><li>origin: the Zip3/Zip5 or 3 character airport code for the lane origin, as provided in the request</li><li>origin_market: the 3 character airport code for the origin Key Market Area (KMA)</li><li>origin_country_code: the 3 character country code the for origin, 'USA'</li><li>destination: the Zip3/Zip5 or 3 character airport code for the lane destination, as provided in the request</li><li>destination_market: the 3 character airport code for the destination Key Market Area (KMA)</li><li>destination_country_code: the 3 character country code the for destination, 'USA'</li><li>equipment_type: the equipment_type provided in the API call by the client (for which the statistics in the response apply)</li><li>data_timestamp: the date for which the data in the response was calculated</li><li>period_start_date: the start date for this statistical period</li><li>period_end_date: the end date for this statistical period</li><li>aggregation: the aggregation type used for this period (SUMMARY, WEEKLY, MONTHLY, QUARTERLY, YEARLY, or WTD)</li><li>lowest_forecast_rpm: the lowest (minimum) forecast rate-per-mile value in the period</li><li>highest_forecast_rpm: the highest (maximum) forecast rate-per-mile value in the period</li><li>median_forecast_rpm: the median forecast rate-per-mile value in the period</li><li>avg_forecast_rpm: the average forecast rate-per-mile value in the period</li><li>std_dev_forecast_rpm: the standard deviation of forecast rate-per-mile values in the period</li><li>lowest_forecast_index: the lowest (minimum) forecast adjustment index value in the period</li><li>highest_forecast_index: the highest (maximum) forecast adjustment index value in the period</li><li>median_forecast_index: the median forecast adjustment index value in the period</li><li>avg_forecast_index: the average forecast adjustment index value in the period</li><li>std_dev_forecast_index: the standard deviation of forecast adjustment index values in the period</li><li>lowest_forecast_customer_rate: the lowest (minimum) forecast customer rate value in the period (only populated if current_customer_rate was provided)</li><li>highest_forecast_customer_rate: the highest (maximum) forecast customer rate value in the period (only populated if current_customer_rate was provided)</li><li>median_forecast_customer_rate: the median forecast customer rate value in the period (only populated if current_customer_rate was provided)</li><li>avg_forecast_customer_rate: the average forecast customer rate value in the period (only populated if current_customer_rate was provided)</li><li>std_dev_forecast_customer_rate: the standard deviation of forecast customer rate values in the period (only populated if current_customer_rate was provided)</li></ul></li>\n  <li>errors: a list object that contains information on lanes that are not valid for the forecast statistics request\n                <ul><li>lane_id: the unique identifier sent in the corresponding call</li><li>origin: the origin string provided in the request</li><li>origin_country_code: 'USA'</li><li>destination: the destination string provided in the request</li><li>destination_country_code: 'USA'</li><li>equipment_type: the equipment_type provided in the API call by the client</li><li>input_miles: the miles provided by the user in the request or calculated (if origin and destination inputs were valid)</li><li>error_found: A lane/date/equipment specific explanation of the issue with the lane information that caused an error</li></ul></li>\n</ul>",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "Request Object with 'start_date', 'end_date', 'aggregation', and a list of 'lanes' objects. Lanes object contains: 'lane_id' (Customer defined), 'origin' (KMA Airport code), 'origin_country_code', 'destination' (KMA Airport Code), 'destination_country_code', 'equipment_type' (REEFER/VAN/FLATBED), 'input_miles' (optional)",
            "schema": {
              "$ref": "#/definitions/TracForecastStatisticsJsonRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/TracForecastStatisticsJsonResponse"
            }
          }
        }
      }
    },
    "/v2/truckload/rates/contract/statistics": {
      "post": {
        "tags": [
          "Truckload V2"
        ],
        "summary": "Contract Rate Statistics",
        "description": "<p>\n            This endpoint allows permissioned users to get statistical aggregations of SONAR KMA contract rates across specified time periods.\n            </p>\n<p>\n            You can click on the Body Sample to the right to populate the example in the test body below.\n            </p>\n<p>\n            For more information about getting access to this endpoint or using this endpoint, please reach out to our Customer Success team (cs@gosonar.com).\n            </p>\n<p>\n            This endpoint handles the following input fields:\n            </p>\n<ul>\n  <li>start_date: the earliest date of the range over which the statistics are being calculated (YYYY-MM-DD), required</li>\n  <li>end_date: the  most recent date of the range over which the statistics are being calculated (YYYY-MM-DD), required</li>\n  <li>aggregation: the time period aggregation type - 'SUMMARY', 'WEEKLY', 'MONTHLY', 'QUARTERLY', 'YEARLY', or 'WTD' (week-to-date), required</li>\n  <li>lane_id: a unique identifier set by the client and will be returned with the response; optional field, not required</li>\n  <li>origin: the 3 character KMA airport code, Zip3 or Zip5 for USA, Zip3 or Zip6 for CAN the origin, required</li>\n  <li>origin_country_code: country code for the origin; at this time only lanes within the contiguous US markets and Canada are available, must be 'USA' or 'CAN', required</li>\n  <li>destination: the 3 character KMA airport code, Zip3 or Zip5 for USA, Zip3 or Zip6 for CAN the origin, required</li>\n  <li>destination_country_code: country code for the destination; at this time only lanes within the contiguous US markets and Canada are available, must be 'USA' or 'CAN', required</li>\n  <li>equipment_type: may be 'VAN' or 'REEFER' for USA, 'VAN' only for CAN, required</li>\n  <li>input_miles: the specific lane miles the rates will be adjusted to; this field is optional but must not be negative and will be calculated if not provided, not required</li>\n</ul>\n<p>\n            Here are the output fields returned in a successful call:\n            </p>\n<ul>\n  <li>lanes: a list object that contains lane-specific statistics\n                <ul><li>lane_id: the unique identifier sent in the corresponding call</li><li>origin: the origin KMA code resolved from the origin input provided</li><li>origin_market: the 3-letter airport code for the origin</li><li>origin_country_code: 'USA' or 'CAN'</li><li>destination: the destination KMA code resolved from the destination input provided</li><li>destination_market: the 3-letter airport code for the destination</li><li>destination_country_code: 'USA' or 'CAN'</li><li>equipment_type: the equipment_type provided in the API call by the client</li><li>miles: the miles provided by the user or calculated from the O/D pair</li><li>mileage_type: 'INPUT' if miles were provided, 'INTERNAL' if calculated</li><li>period_start_date: the start date of the aggregation period</li><li>period_end_date: the end date of the aggregation period</li><li>data_timestamp: the timestamp when the statistics were generated</li><li>aggregation: the aggregation type used for this period</li><li>lowest_rpm: the lowest (minimum) RPM value in the period</li><li>highest_rpm: the highest (maximum) RPM value in the period</li><li>avg_rpm: the average RPM value in the period</li><li>avg_rpm_low: the average of minimum RPM values in the period</li><li>avg_rpm_high: the average of maximum RPM values in the period</li><li>std_dev_rpm: the standard deviation of RPM values in the period</li><li>lowest_rate: the lowest (minimum) rate value in the period</li><li>highest_rate: the highest (maximum) rate value in the period</li><li>avg_rate: the average rate value in the period</li><li>avg_rate_low: the average of minimum rate values in the period</li><li>avg_rate_high: the average of maximum rate values in the period</li><li>std_dev_rate: the standard deviation of rate values in the period</li><li>avg_confidence_score: the average confidence score for rates in the period</li><li>avg_origin_radius_expansion: the average origin radius expansion used in rate calculations</li><li>avg_destination_radius_expansion: the average destination radius expansion used in rate calculations</li><li>avg_timeframe_expansion: the average days back needed for rate calculations</li><li>avg_total_load_count: the average number of loads found per calculation</li><li>avg_total_contributor_count: the average number of data contributors per calculation</li></ul></li>\n  <li>errors: a list object that contains information on lanes that are not valid for the statistics request\n                <ul><li>lane_id: the unique identifier sent in the corresponding call</li><li>origin: the origin string provided in the request</li><li>origin_country_code: 'USA' or 'CAN'</li><li>destination: the destination string provided in the request</li><li>destination_country_code: 'USA' or 'CAN'</li><li>equipment_type: the equipment_type provided in the API call by the client</li><li>input_miles: the miles provided by the user in the request or calculated (if origin and destination inputs were valid)</li><li>error_found: A lane/date/equipment specific explanation of the issue with the lane information that caused an error</li></ul></li>\n</ul>",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "Request Object with 'start_date', 'end_date', 'aggregation', and a list of 'lanes' objects. Lanes object contains: 'lane_id' (Customer defined), 'origin' (KMA Airport code), 'origin_country_code', 'destination' (KMA Airport Code), 'destination_country_code', 'equipment_type' (REEFER/VAN/FLATBED), 'input_miles' (optional)",
            "schema": {
              "$ref": "#/definitions/ContractRateStatisticsJsonRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ContractRateStatisticsJsonResponse"
            }
          }
        }
      }
    },
    "/v2/truckload/rates/bulk": {
      "post": {
        "tags": [
          "Truckload V2"
        ],
        "summary": "Bulk Truckload Rates (beta)",
        "description": "<p>\n            This endpoint allows permissioned users to get our SONAR bulk truckload rates, based on an origin state/provinces and route mileage. Our rate data is being updated weekly and is available for most US states and Canadian provinces. Miles are required and must be greater than 0.\n            </p>\n<p>\n            You can click on the Body Sample to the right to populate the example in the test body below.\n            </p>\n<p>\n            For more information about getting access to this endpoint or using this endpoint, please reach out to our Customer Success team (cs@gosonar.com).\n            </p>\n<p>\n            This endpoint handles the following input fields:\n            </p>\n<ul>\n  <li>start_date: the earliest date of the range over which the rate is being requested (YYYY-MM-DD), required</li>\n  <li>end_date: the  most recent date of the range over which the rate is being requested (YYYY-MM-DD), required</li>\n  <li>lane_id: a unique identifier set by the client and will be returned with the response; optional field, not required</li>\n  <li>origin_state_code: the 2 character US State or Canadian Province Code for the origin, required</li>\n  <li>loaded_miles: the one way mileage of the load, required, must be greater than 0</li>\n  <li>rate_type: the type of rate being requested, may be 'ROUNDTRIP' or 'ONEWAY', optional field, defaults to 'ROUNDTRIP'</li>\n</ul>\n<p>\n            Here are the output fields returned in a successful call:\n            </p>\n<ul>\n  <li>Lanes: A list object that contains the output information associated with the valid requested lanes\n                <ul><li>lane_id: the unique identifier sent in the corresponding call</li><li>loaded_miles: the one way mileage for the load, as entered in the request</li><li>rate_type: the type of rate, either round trip or one way as entered in the request</li><li>origin_state_code: the 2 character US State Code for the origin, as provided in the request</li><li>data_date: the date for which the data in the response was calculated (ie: the date to which the rates in the response were applicable)</li><li>rate_high: the upper confidence interval of the median total rate, corresponding to the origin state, loaded miles and rate type provided in the API call by the client</li><li>rate_low: the lower confidence interval of the median total rate, corresponding to the origin state, loaded miles and rate type provided in the API call by the client</li><li>rate_median: the median total rate, corresponding to the origin state, loaded miles and rate type provided in the API call by the client</li></ul></li>\n  <li>Errors: a list object that contains information on lanes that are not valid for the rate request\n                <ul><li>lane_id: the unique identifier sent in the corresponding call</li><li>origin_state_code: the state code string provided in the request</li><li>loaded_miles: the miles provided by the client in the request</li><li>rate_type: the type of rate provided by the client in the request, or defaulted to 'ROUNDTRIP'</li><li>error_found: A lane specific  explanation of the issue with the lane information that caused an error</li></ul></li>\n</ul>",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "description": "Request Object with 'start_date', 'end_date', and a list of 'lanes' objects. Lanes object contains: 'lane_id' (Customer defined), 'origin_state_code' (US/CAN State Code), 'rate_type' (either 'ROUNDTRIP' or 'ONEWAY') and 'loaded_miles' (the one way mileage of the load)",
            "schema": {
              "$ref": "#/definitions/BulkTankerRateRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/BulkTankerRateResponse"
            }
          }
        }
      }
    },
    "/v2/truckload/coverage_guide": {
      "post": {
        "tags": [
          "Truckload V2"
        ],
        "summary": "Coverage Guide",
        "description": "<p>\n            This endpoint allows permissioned users to get the coverage guide for a set of lanes.\n            </p>\n<p>\n            You can click on the Body Sample to the right to populate the example in the test body below.\n            </p>\n<p>\n            For more information about getting access to this endpoint or using this endpoint, please reach out to our Customer Success team (cs@gosonar.com).\n            </p>\n<p>\n            This endpoint handles the following input fields:\n            </p>\n<ul>\n  <li>lanes: A list object that contains the input information associated with the lanes\n                <ul><li>lane_id: an optional identifier that will be returned with the associated response object</li><li>origin_type: currently only accepts 'zip'</li><li>origin: currently only accepts a zip code with at least 3 digits</li><li>origin_country_code: currently only accepts 'USA'</li><li>destination_type: currently only accepts 'zip'</li><li>destination: currently only accepts a zip code with at least 3 digits</li><li>destination_country_code: currently only accepts 'USA'</li><li>equipment_type: currently accepts 'VAN', 'REEFER', or 'FLATBED'</li><li>input_miles: optional integer number of miles, if left off a distance will be calculated based on the origin and destination</li></ul></li>\n</ul>\n<p>\n            Here are the output fields returned in a successful call:\n            </p>\n<ul>\n  <li>lanes: A list object that contains the output information associated with the valid requested lanes\n                <ul><li>lane_id: the identifier sent in the corresponding request</li><li>data_timestamp: date of the latest spot rate data</li><li>generated_on: date the coverage guide was generated</li><li>origin: zip code</li><li>origin_market: KMA associated with the origin zip code</li><li>origin_country_code: country code</li><li>destination: zip code</li><li>destination_market: KMA associated with the destination zip code</li><li>destination_country_code: country code</li><li>equipment_type: equipment type</li><li>miles: the distance between the origin and destination either provided in the request or calculated based on the origin and destination</li><li>rpm: latest TRAC rpm for the lane</li><li>rpm_high: latest high TRAC rpm for the lane</li><li>rpm_low: latest low TRAC rpm for the lane</li><li>rpm_wow_change_percent: week over week percent change for TRAC rpm</li><li>rate: latest TRAC rate for the lane</li><li>rate_high: latest high TRAC rate for the lane</li><li>rate_low: latest low TRAC rate for the lane</li><li>confidence_score: confidence score associated with the TRAC data for this lane</li><li>mytrac_rate: myTRAC rate for the lane (org must be entitled to myTRAC and data must exist for the lane)</li><li>mytrac_rpm: myTRAC rpm for the lane (org must be entitled to myTRAC and data must exist for the lane)</li><li>origin_rejection_percent: latest tender rejection at the origin</li><li>destination_rejection_percent: latest tender rejection at the destination</li><li>current_capacity_condition: description of current conditions</li><li>directional_capacity_change: description of the directional conditions over the last week</li><li>coverage_difficulty_score: combination of current and directional conditions showing how difficult a lane is to cover, 9 being most difficult</li><li>coverage_guidance: coverage guidance</li></ul></li>\n  <li>errors: a list object that contains information on lanes that we are unable to return a coverage guide for\n                <ul><li>original_lane: the request that produced the error</li><li>error_found: description of the error</li></ul></li>\n</ul>",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "x-api-version",
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/CoverageGuideApiRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/CoverageGuideApiLaneResponseV2"
            }
          }
        }
      }
    }
  },
  "definitions": {
    "AllBookingsByVersionDateItem": {
      "type": "object",
      "properties": {
        "date": {
          "type": "string",
          "example": "2025-08-01"
        },
        "confirmed_teu_count_global_index": {
          "$ref": "#/definitions/OceanBookingIndex"
        },
        "confirmed_transaction_count_global_index": {
          "$ref": "#/definitions/OceanBookingIndex"
        },
        "teu_count_rejection_rate": {
          "$ref": "#/definitions/OceanBookingIndex"
        },
        "transaction_count_rejection_rate": {
          "$ref": "#/definitions/OceanBookingIndex"
        }
      },
      "additionalProperties": false
    },
    "AllBookingsByVersionDateResponse": {
      "type": "object",
      "properties": {
        "origin": {
          "$ref": "#/definitions/OceanBookingLocation"
        },
        "destination": {
          "$ref": "#/definitions/OceanBookingLocation"
        },
        "start_date": {
          "type": "string",
          "example": "2025-08-01"
        },
        "end_date": {
          "type": "string",
          "example": "2025-08-02"
        },
        "values": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/AllBookingsByVersionDateItem"
          }
        }
      },
      "additionalProperties": false
    },
    "AmendedBookingsByVersionDateItem": {
      "type": "object",
      "properties": {
        "date": {
          "type": "string",
          "example": "2025-08-01"
        },
        "confirmed_teu_count_global_index": {
          "$ref": "#/definitions/OceanBookingIndex"
        },
        "confirmed_transaction_count_global_index": {
          "$ref": "#/definitions/OceanBookingIndex"
        },
        "teu_count_rejection_rate": {
          "$ref": "#/definitions/OceanBookingIndex"
        },
        "transaction_count_rejection_rate": {
          "$ref": "#/definitions/OceanBookingIndex"
        }
      },
      "additionalProperties": false
    },
    "AmendedBookingsByVersionDateResponse": {
      "type": "object",
      "properties": {
        "origin": {
          "$ref": "#/definitions/OceanBookingLocation"
        },
        "destination": {
          "$ref": "#/definitions/OceanBookingLocation"
        },
        "start_date": {
          "type": "string",
          "example": "2025-08-01"
        },
        "end_date": {
          "type": "string",
          "example": "2025-08-02"
        },
        "values": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/AmendedBookingsByVersionDateItem"
          }
        }
      },
      "additionalProperties": false
    },
    "ApiGranularityLane": {
      "type": "object",
      "properties": {
        "qualifier": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "outBoundCode": {
          "type": "string"
        },
        "outBoundCity": {
          "type": "string"
        },
        "outBoundState": {
          "type": "string"
        },
        "inBoundCode": {
          "type": "string"
        },
        "inBoundCity": {
          "type": "string"
        },
        "inBoundState": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "ApiGranularityLevel": {
      "type": "object",
      "properties": {
        "qualifier_Name": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "code": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "ApiValidTickerObject": {
      "type": "object",
      "properties": {
        "index": {
          "type": "string"
        },
        "qualifier": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "BulkTankerLane": {
      "type": "object",
      "properties": {
        "lane_id": {
          "type": "string",
          "example": "AL-520"
        },
        "origin_state_code": {
          "type": "string",
          "example": "AL"
        },
        "loaded_miles": {
          "format": "double",
          "type": "number",
          "example": 520
        },
        "rate_type": {
          "enum": [
            "UNKNOWN",
            "ROUNDTRIP",
            "ONEWAY"
          ],
          "type": "string",
          "example": "ROUNDTRIP"
        }
      },
      "additionalProperties": false
    },
    "BulkTankerRateLane": {
      "type": "object",
      "properties": {
        "lane_id": {
          "type": "string",
          "example": "TN-650"
        },
        "origin_state_code": {
          "type": "string",
          "example": "TN"
        },
        "loaded_miles": {
          "format": "double",
          "type": "number",
          "example": 500
        },
        "rate_type": {
          "enum": [
            "UNKNOWN",
            "ROUNDTRIP",
            "ONEWAY"
          ],
          "type": "string",
          "example": "ROUNDTRIP"
        },
        "data_date": {
          "format": "date-time",
          "type": "string",
          "example": "2026-01-01"
        },
        "rate_low": {
          "format": "double",
          "type": "number",
          "example": 2407.19
        },
        "rate_median": {
          "format": "double",
          "type": "number",
          "example": 2638.59
        },
        "rate_high": {
          "format": "double",
          "type": "number",
          "example": 2869.98
        }
      },
      "additionalProperties": false
    },
    "BulkTankerRateLaneError": {
      "type": "object",
      "properties": {
        "lane": {
          "$ref": "#/definitions/BulkTankerLane"
        },
        "error_found": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "BulkTankerRateRequest": {
      "type": "object",
      "properties": {
        "start_date": {
          "format": "date",
          "type": "string",
          "example": "2026-03-01"
        },
        "end_date": {
          "format": "date",
          "type": "string",
          "example": "2026-03-15"
        },
        "lanes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/BulkTankerLane"
          }
        }
      },
      "additionalProperties": false
    },
    "BulkTankerRateResponse": {
      "type": "object",
      "properties": {
        "lanes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/BulkTankerRateLane"
          }
        },
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/BulkTankerRateLaneError"
          }
        }
      },
      "additionalProperties": false
    },
    "CapacityLaneOption": {
      "type": "object",
      "properties": {
        "lane_id": {
          "type": "string"
        },
        "origin": {
          "type": "string"
        },
        "destination": {
          "type": "string"
        },
        "equipment_type": {
          "type": "string"
        },
        "origin_country_code": {
          "type": "string"
        },
        "destination_country_code": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "CapacityLaneRequest": {
      "type": "object",
      "properties": {
        "start_date": {
          "format": "date-time",
          "type": "string"
        },
        "end_date": {
          "format": "date-time",
          "type": "string"
        },
        "lanes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/CapacityLaneOption"
          }
        }
      },
      "additionalProperties": false
    },
    "CapacityLaneResponse": {
      "type": "object",
      "properties": {
        "lane_id": {
          "type": "string"
        },
        "data_timestamp": {
          "format": "date-time",
          "type": "string"
        },
        "origin": {
          "type": "string"
        },
        "origin_country_code": {
          "type": "string"
        },
        "origin_market": {
          "type": "string"
        },
        "destination": {
          "type": "string"
        },
        "destination_country_code": {
          "type": "string"
        },
        "destination_market": {
          "type": "string"
        },
        "equipment_type": {
          "type": "string"
        },
        "capacity_lane_score": {
          "format": "int32",
          "type": "integer"
        },
        "day_over_day_change": {
          "format": "int32",
          "type": "integer"
        },
        "origin_capacity_trend_score": {
          "format": "int32",
          "type": "integer"
        },
        "destination_capacity_trend_score": {
          "format": "int32",
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "ContractRateLaneStatistics": {
      "required": [
        "aggregation",
        "avg_confidence_score",
        "avg_destination_radius_expansion",
        "avg_origin_radius_expansion",
        "avg_rate",
        "avg_rate_high",
        "avg_rate_low",
        "avg_rpm",
        "avg_rpm_high",
        "avg_rpm_low",
        "avg_timeframe_expansion",
        "avg_total_contributor_count",
        "avg_total_load_count",
        "data_timestamp",
        "destination",
        "destination_country_code",
        "destination_market",
        "equipment_type",
        "highest_rate",
        "highest_rpm",
        "lane_id",
        "lowest_rate",
        "lowest_rpm",
        "mileage_type",
        "miles",
        "origin",
        "origin_country_code",
        "origin_market",
        "period_end_date",
        "period_start_date",
        "std_dev_rate",
        "std_dev_rpm"
      ],
      "type": "object",
      "properties": {
        "lane_id": {
          "minLength": 1,
          "type": "string"
        },
        "miles": {
          "format": "double",
          "type": "number"
        },
        "mileage_type": {
          "minLength": 1,
          "type": "string"
        },
        "origin": {
          "minLength": 1,
          "type": "string"
        },
        "origin_market": {
          "minLength": 1,
          "type": "string"
        },
        "origin_country_code": {
          "minLength": 1,
          "type": "string"
        },
        "destination": {
          "minLength": 1,
          "type": "string"
        },
        "destination_market": {
          "minLength": 1,
          "type": "string"
        },
        "destination_country_code": {
          "minLength": 1,
          "type": "string"
        },
        "equipment_type": {
          "minLength": 1,
          "type": "string"
        },
        "data_timestamp": {
          "format": "date-time",
          "type": "string"
        },
        "period_start_date": {
          "format": "date-time",
          "type": "string"
        },
        "period_end_date": {
          "format": "date-time",
          "type": "string"
        },
        "aggregation": {
          "minLength": 1,
          "type": "string"
        },
        "lowest_rpm": {
          "format": "double",
          "type": "number"
        },
        "highest_rpm": {
          "format": "double",
          "type": "number"
        },
        "std_dev_rpm": {
          "format": "double",
          "type": "number"
        },
        "lowest_rate": {
          "format": "double",
          "type": "number"
        },
        "highest_rate": {
          "format": "double",
          "type": "number"
        },
        "std_dev_rate": {
          "format": "double",
          "type": "number"
        },
        "avg_rpm": {
          "format": "double",
          "type": "number"
        },
        "avg_rpm_high": {
          "format": "double",
          "type": "number"
        },
        "avg_rpm_low": {
          "format": "double",
          "type": "number"
        },
        "avg_rate": {
          "format": "double",
          "type": "number"
        },
        "avg_rate_high": {
          "format": "double",
          "type": "number"
        },
        "avg_rate_low": {
          "format": "double",
          "type": "number"
        },
        "avg_confidence_score": {
          "format": "double",
          "type": "number"
        },
        "avg_origin_radius_expansion": {
          "format": "double",
          "type": "number"
        },
        "avg_destination_radius_expansion": {
          "format": "double",
          "type": "number"
        },
        "avg_timeframe_expansion": {
          "format": "double",
          "type": "number"
        },
        "avg_total_load_count": {
          "format": "double",
          "type": "number"
        },
        "avg_total_contributor_count": {
          "format": "double",
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "ContractRateStatisticsJsonRequest": {
      "required": [
        "aggregation",
        "end_date",
        "lanes",
        "start_date"
      ],
      "type": "object",
      "properties": {
        "start_date": {
          "format": "date-time",
          "type": "string"
        },
        "end_date": {
          "format": "date-time",
          "type": "string"
        },
        "aggregation": {
          "minLength": 1,
          "type": "string"
        },
        "lanes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TracStatisticsLaneJsonRequest"
          }
        }
      },
      "additionalProperties": false
    },
    "ContractRateStatisticsJsonResponse": {
      "required": [
        "errors",
        "lanes"
      ],
      "type": "object",
      "properties": {
        "lanes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ContractRateLaneStatistics"
          }
        },
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TracStatisticsJsonError"
          }
        }
      },
      "additionalProperties": false
    },
    "CoverageGuideApiLaneRequest": {
      "required": [
        "destination",
        "equipment_type",
        "origin"
      ],
      "type": "object",
      "properties": {
        "lane_id": {
          "type": "string",
          "example": "100001"
        },
        "origin_type": {
          "type": "string",
          "example": "zip"
        },
        "origin": {
          "minLength": 1,
          "type": "string",
          "example": "900"
        },
        "origin_country_code": {
          "type": "string",
          "example": "USA"
        },
        "destination_type": {
          "type": "string",
          "example": "zip"
        },
        "destination": {
          "minLength": 1,
          "type": "string",
          "example": "752"
        },
        "destination_country_code": {
          "type": "string",
          "example": "USA"
        },
        "equipment_type": {
          "minLength": 1,
          "type": "string",
          "example": "VAN"
        },
        "input_miles": {
          "format": "int32",
          "type": "integer",
          "example": 1415
        }
      },
      "additionalProperties": false
    },
    "CoverageGuideApiLaneResponse": {
      "required": [
        "destination",
        "destination_market",
        "equipment_type",
        "origin",
        "origin_market"
      ],
      "type": "object",
      "properties": {
        "lane_id": {
          "type": "string",
          "example": "100001"
        },
        "data_timestamp": {
          "type": "string",
          "example": "2025-01-02"
        },
        "generated_on": {
          "type": "string",
          "example": "2025-01-03"
        },
        "origin": {
          "minLength": 1,
          "type": "string",
          "example": "900"
        },
        "origin_market": {
          "minLength": 1,
          "type": "string",
          "example": "LAX"
        },
        "origin_country_code": {
          "type": "string",
          "example": "USA"
        },
        "destination": {
          "minLength": 1,
          "type": "string",
          "example": "752"
        },
        "destination_market": {
          "minLength": 1,
          "type": "string",
          "example": "DAL"
        },
        "destination_country_code": {
          "type": "string",
          "example": "USA"
        },
        "equipment_type": {
          "minLength": 1,
          "type": "string",
          "example": "VAN"
        },
        "miles": {
          "format": "double",
          "type": "number",
          "example": 1415
        },
        "rpm": {
          "format": "double",
          "type": "number",
          "example": 2.41
        },
        "rpm_high": {
          "format": "double",
          "type": "number",
          "example": 2.56
        },
        "rpm_low": {
          "format": "double",
          "type": "number",
          "example": 2.24
        },
        "rate": {
          "format": "double",
          "type": "number",
          "example": 3410.15
        },
        "rate_high": {
          "format": "double",
          "type": "number",
          "example": 3622.4
        },
        "rate_low": {
          "format": "double",
          "type": "number",
          "example": 3169.6
        },
        "confidence_score": {
          "format": "double",
          "type": "number",
          "example": 5
        },
        "myTRAC_rate": {
          "format": "double",
          "type": "number",
          "example": 3495.6
        },
        "myTRAC_rpm": {
          "format": "double",
          "type": "number",
          "example": 2.47
        },
        "outbound_tender_rejection_percent": {
          "format": "double",
          "type": "number",
          "example": 5.35
        },
        "current_capacity_condition": {
          "type": "string",
          "example": "Currently Neutral"
        },
        "directional_capacity_change": {
          "type": "string",
          "example": "Loosening"
        },
        "coverage_difficulty_score": {
          "format": "int32",
          "type": "integer",
          "example": 4
        },
        "coverage_guidance": {
          "type": "string",
          "example": "Negotiate: Market is loosening; capacity is becoming easier to find."
        }
      },
      "additionalProperties": false
    },
    "CoverageGuideApiLaneResponseV2": {
      "required": [
        "destination",
        "destination_market",
        "equipment_type",
        "origin",
        "origin_market"
      ],
      "type": "object",
      "properties": {
        "lane_id": {
          "type": "string",
          "example": "100001"
        },
        "data_timestamp": {
          "type": "string",
          "example": "2025-01-02"
        },
        "generated_on": {
          "type": "string",
          "example": "2025-01-03"
        },
        "origin": {
          "minLength": 1,
          "type": "string",
          "example": "900"
        },
        "origin_market": {
          "minLength": 1,
          "type": "string",
          "example": "LAX"
        },
        "origin_country_code": {
          "type": "string",
          "example": "USA"
        },
        "destination": {
          "minLength": 1,
          "type": "string",
          "example": "752"
        },
        "destination_market": {
          "minLength": 1,
          "type": "string",
          "example": "DAL"
        },
        "destination_country_code": {
          "type": "string",
          "example": "USA"
        },
        "equipment_type": {
          "minLength": 1,
          "type": "string",
          "example": "VAN"
        },
        "miles": {
          "format": "double",
          "type": "number",
          "example": 1415
        },
        "rpm": {
          "format": "double",
          "type": "number",
          "example": 2.41
        },
        "rpm_high": {
          "format": "double",
          "type": "number",
          "example": 2.56
        },
        "rpm_low": {
          "format": "double",
          "type": "number",
          "example": 2.24
        },
        "rate": {
          "format": "double",
          "type": "number",
          "example": 3410.15
        },
        "rate_high": {
          "format": "double",
          "type": "number",
          "example": 3622.4
        },
        "rate_low": {
          "format": "double",
          "type": "number",
          "example": 3169.6
        },
        "confidence_score": {
          "format": "double",
          "type": "number",
          "example": 5
        },
        "rpm_wow_change_percent": {
          "format": "double",
          "type": "number",
          "example": 2.41
        },
        "mytrac_rate": {
          "format": "double",
          "type": "number",
          "example": 3495.6
        },
        "mytrac_rpm": {
          "format": "double",
          "type": "number",
          "example": 2.47
        },
        "origin_rejection_percent": {
          "format": "double",
          "type": "number",
          "example": 5.35
        },
        "destination_rejection_percent": {
          "format": "double",
          "type": "number",
          "example": 5.35
        },
        "current_capacity_condition": {
          "type": "string",
          "example": "Currently Neutral"
        },
        "directional_capacity_change": {
          "type": "string",
          "example": "Loosening"
        },
        "coverage_difficulty_score": {
          "format": "int32",
          "type": "integer",
          "example": 4
        },
        "coverage_guidance": {
          "type": "string",
          "example": "Negotiate: Market is loosening; capacity is becoming easier to find."
        }
      },
      "additionalProperties": false
    },
    "CoverageGuideApiRequest": {
      "required": [
        "lanes"
      ],
      "type": "object",
      "properties": {
        "lanes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/CoverageGuideApiLaneRequest"
          }
        }
      },
      "additionalProperties": false
    },
    "CoverageGuideConnectDeleteLanesApiRequest": {
      "type": "object",
      "properties": {
        "load_ids": {
          "description": "Array of load ids",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "CoverageGuideConnectDeleteLanesApiResponse": {
      "type": "object",
      "properties": {
        "success": {
          "description": "Indicates whether the deletion was successful or not",
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "CoverageGuideConnectLaneApiRequest": {
      "description": "Represents a single load in the request",
      "type": "object",
      "properties": {
        "load_id": {
          "description": "Unique identifier for the load",
          "type": "string",
          "example": "100001"
        },
        "origin_zip": {
          "description": "Origin postal code (at least 3 characters long)",
          "type": "string",
          "example": "60601"
        },
        "destination_zip": {
          "description": "Destination postal code (at least 3 characters long)",
          "type": "string",
          "example": "30303"
        },
        "equipment_type": {
          "description": "Equipment type (VAN, REEFER, or FLATBED)",
          "type": "string",
          "example": "VAN"
        },
        "segment": {
          "description": "Segment identifier for grouping loads",
          "type": "string",
          "example": "midwest"
        },
        "consignee_name": {
          "description": "Consignee name",
          "type": "string",
          "example": "ABC Distribution"
        },
        "input_miles": {
          "format": "int32",
          "description": "Distance in miles (user input)",
          "type": "integer",
          "example": 716
        },
        "my_rate": {
          "format": "double",
          "description": "Customer's rate in dollars",
          "type": "number",
          "example": 1800.5
        },
        "order_tender_datetime": {
          "description": "When the order was tendered",
          "type": "string",
          "example": "2023-12-20T20:25:43.515Z"
        },
        "scheduled_pickup_datetime": {
          "description": "Scheduled pickup date/time",
          "type": "string",
          "example": "2023-12-21T08:00:00.000Z"
        },
        "scheduled_delivery_datetime": {
          "description": "Scheduled delivery date/time",
          "type": "string",
          "example": "2023-12-22T17:00:00.000Z"
        },
        "cargo_description": {
          "description": "Description of cargo",
          "type": "string",
          "example": "Building materials"
        },
        "number_of_pickups": {
          "format": "int32",
          "description": "Number of pickup stops",
          "type": "integer",
          "example": 1
        },
        "number_of_drops": {
          "format": "int32",
          "description": "Number of delivery stops",
          "type": "integer",
          "example": 1
        },
        "number_of_stops": {
          "format": "int32",
          "description": "Total number of stops",
          "type": "integer",
          "example": 2
        },
        "full_partial": {
          "description": "Full or partial truckload",
          "type": "string",
          "example": "FULL"
        },
        "equipment_detail": {
          "description": "Detailed equipment specifications",
          "type": "string",
          "example": "53ft dry van"
        },
        "hazmat": {
          "description": "Whether cargo is hazardous material",
          "type": "boolean",
          "example": false
        }
      },
      "additionalProperties": { }
    },
    "CoverageGuideConnectLaneErrorApi": {
      "description": "Error information for a failed load",
      "type": "object",
      "properties": {
        "request_index": {
          "format": "int32",
          "description": "0-based index of the load in the request",
          "type": "integer"
        },
        "load_id": {
          "description": "load_id from the request",
          "type": "string"
        },
        "error_type": {
          "description": "Type of error (validation, enrichment, etc.)",
          "type": "string"
        },
        "message": {
          "description": "Detailed error message",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "CoverageGuideConnectUpsertApiRequest": {
      "type": "object",
      "properties": {
        "loads": {
          "description": "List of loads to add or update",
          "type": "array",
          "items": {
            "$ref": "#/definitions/CoverageGuideConnectLaneApiRequest"
          }
        }
      },
      "additionalProperties": false
    },
    "CoverageGuideConnectUpsertApiResponse": {
      "type": "object",
      "properties": {
        "total_loads": {
          "format": "int32",
          "description": "Total number of loads in request",
          "type": "integer"
        },
        "successful_loads": {
          "format": "int32",
          "description": "Number of loads successfully processed",
          "type": "integer"
        },
        "failed_loads": {
          "format": "int32",
          "description": "Number of loads that failed validation/processing",
          "type": "integer"
        },
        "errors": {
          "description": "List of errors for failed loads",
          "type": "array",
          "items": {
            "$ref": "#/definitions/CoverageGuideConnectLaneErrorApi"
          }
        }
      },
      "additionalProperties": false
    },
    "DataIndexContent": {
      "type": "object",
      "properties": {
        "index_Name": {
          "type": "string"
        },
        "index": {
          "type": "string"
        },
        "frequency": {
          "type": "string"
        },
        "unit_Type": {
          "type": "string"
        },
        "description": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "DataIndexObject": {
      "type": "object",
      "properties": {
        "data_Timestamp": {
          "format": "date-time",
          "type": "string"
        },
        "data_Value": {
          "format": "double",
          "type": "number"
        },
        "index": {
          "type": "string"
        },
        "qualifier": {
          "type": "string"
        },
        "qualifier_Code": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "DataLongObject": {
      "type": "object",
      "properties": {
        "data_Timestamp": {
          "format": "date-time",
          "type": "string"
        },
        "data_Value": {
          "format": "double",
          "type": "number"
        },
        "index_Definition": {
          "$ref": "#/definitions/Index_Definition"
        },
        "qualifier_Item": {
          "$ref": "#/definitions/Qualifier_Item"
        },
        "qualifier_Level": {
          "$ref": "#/definitions/Qualifier_Level"
        }
      },
      "additionalProperties": false
    },
    "ErrorResponse": {
      "type": "object",
      "properties": {
        "error": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "attributes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "FileError": {
      "type": "object",
      "properties": {
        "row_num": {
          "format": "int32",
          "type": "integer"
        },
        "humanReadableError": {
          "type": "string",
          "readOnly": true
        },
        "error": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "attributes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "FirstAndLastBookingVersionItem": {
      "type": "object",
      "properties": {
        "date": {
          "type": "string",
          "example": "2025-08-01"
        },
        "teu_count_rejection_rate": {
          "$ref": "#/definitions/OceanBookingIndex"
        },
        "transaction_count_rejection_rate": {
          "$ref": "#/definitions/OceanBookingIndex"
        }
      },
      "additionalProperties": false
    },
    "FirstAndLastBookingVersionsResponse": {
      "type": "object",
      "properties": {
        "origin": {
          "$ref": "#/definitions/OceanBookingLocation"
        },
        "destination": {
          "$ref": "#/definitions/OceanBookingLocation"
        },
        "start_date": {
          "type": "string",
          "example": "2025-08-01"
        },
        "end_date": {
          "type": "string",
          "example": "2025-08-02"
        },
        "values": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/FirstAndLastBookingVersionItem"
          }
        }
      },
      "additionalProperties": false
    },
    "FirstBookingsByDepartureDateItem": {
      "type": "object",
      "properties": {
        "date": {
          "type": "string",
          "example": "2025-08-01"
        },
        "confirmed_teu_count_0_day_lead_index": {
          "$ref": "#/definitions/OceanBookingIndex"
        },
        "confirmed_teu_count_7_day_lead_index": {
          "$ref": "#/definitions/OceanBookingIndex"
        },
        "confirmed_teu_count_14_day_lead_index": {
          "$ref": "#/definitions/OceanBookingIndex"
        },
        "confirmed_teu_count_21_day_lead_index": {
          "$ref": "#/definitions/OceanBookingIndex"
        },
        "confirmed_teu_count_28_day_lead_index": {
          "$ref": "#/definitions/OceanBookingIndex"
        }
      },
      "additionalProperties": false
    },
    "FirstBookingsByDepartureDateResponse": {
      "type": "object",
      "properties": {
        "origin": {
          "$ref": "#/definitions/OceanBookingLocation"
        },
        "destination": {
          "$ref": "#/definitions/OceanBookingLocation"
        },
        "start_date": {
          "type": "string",
          "example": "2025-08-01"
        },
        "end_date": {
          "type": "string",
          "example": "2025-08-02"
        },
        "values": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/FirstBookingsByDepartureDateItem"
          }
        }
      },
      "additionalProperties": false
    },
    "FirstBookingsByVersionDateItem": {
      "type": "object",
      "properties": {
        "date": {
          "type": "string",
          "example": "2025-08-01"
        },
        "confirmed_teu_count_global_index": {
          "$ref": "#/definitions/OceanBookingIndex"
        },
        "confirmed_transaction_count_global_index": {
          "$ref": "#/definitions/OceanBookingIndex"
        },
        "transit_time_days": {
          "$ref": "#/definitions/OceanBookingIndex"
        }
      },
      "additionalProperties": false
    },
    "FirstBookingsByVersionDateResponse": {
      "type": "object",
      "properties": {
        "origin": {
          "$ref": "#/definitions/OceanBookingLocation"
        },
        "destination": {
          "$ref": "#/definitions/OceanBookingLocation"
        },
        "start_date": {
          "type": "string",
          "example": "2025-08-01"
        },
        "end_date": {
          "type": "string",
          "example": "2025-08-02"
        },
        "values": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/FirstBookingsByVersionDateItem"
          }
        }
      },
      "additionalProperties": false
    },
    "ForecastError": {
      "required": [
        "error_found"
      ],
      "type": "object",
      "properties": {
        "original_lane": {
          "$ref": "#/definitions/ForecastLaneRequest"
        },
        "error_found": {
          "minLength": 1,
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "ForecastLane": {
      "type": "object",
      "properties": {
        "lane_id": {
          "type": "string",
          "example": "ATL-MOB"
        },
        "data_timestamp": {
          "type": "string",
          "example": "2025-12-12"
        },
        "generated_on": {
          "type": "string",
          "example": "2025-12-12"
        },
        "origin": {
          "type": "string",
          "example": "ATL"
        },
        "origin_country_code": {
          "type": "string",
          "example": "USA"
        },
        "destination": {
          "type": "string",
          "example": "MOB"
        },
        "destination_country_code": {
          "type": "string",
          "example": "USA"
        },
        "equipment_type": {
          "type": "string",
          "example": "VAN"
        },
        "current_customer_rate": {
          "format": "double",
          "type": "number",
          "example": 1000
        },
        "forecast_index_value": {
          "format": "double",
          "type": "number",
          "example": 0
        },
        "forecast_index_value_high": {
          "format": "double",
          "type": "number",
          "example": 0.1
        },
        "forecast_index_value_low": {
          "format": "double",
          "type": "number",
          "example": -0.1
        },
        "forecast_rpm_trac": {
          "format": "double",
          "type": "number",
          "example": 6.07
        },
        "forecast_rpm_trac_high": {
          "format": "double",
          "type": "number",
          "example": 6.13
        },
        "forecast_rpm_trac_low": {
          "format": "double",
          "type": "number",
          "example": 6
        },
        "forecast_rate_customer": {
          "format": "double",
          "type": "number",
          "example": 1000
        },
        "forecast_rate_customer_high": {
          "format": "double",
          "type": "number",
          "example": 1010
        },
        "forecast_rate_customer_low": {
          "format": "double",
          "type": "number",
          "example": 990
        }
      },
      "additionalProperties": false
    },
    "ForecastLaneRequest": {
      "required": [
        "destination",
        "destination_country_code",
        "equipment_type",
        "origin",
        "origin_country_code"
      ],
      "type": "object",
      "properties": {
        "lane_id": {
          "type": "string",
          "example": "ATL-MOB"
        },
        "origin": {
          "minLength": 1,
          "type": "string",
          "example": "ATL"
        },
        "origin_country_code": {
          "minLength": 1,
          "type": "string",
          "example": "USA"
        },
        "destination": {
          "minLength": 1,
          "type": "string",
          "example": "MOB"
        },
        "destination_country_code": {
          "minLength": 1,
          "type": "string",
          "example": "USA"
        },
        "equipment_type": {
          "minLength": 1,
          "type": "string",
          "example": "VAN"
        },
        "current_customer_rate": {
          "format": "double",
          "type": "number",
          "example": 968
        },
        "input_miles": {
          "format": "double",
          "type": "number",
          "example": 320
        }
      },
      "additionalProperties": false
    },
    "ForecastRequest": {
      "required": [
        "end_date",
        "lanes",
        "start_date"
      ],
      "type": "object",
      "properties": {
        "start_date": {
          "format": "date-time",
          "type": "string",
          "example": "2025-12-01"
        },
        "end_date": {
          "format": "date-time",
          "type": "string",
          "example": "2025-12-31"
        },
        "lanes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ForecastLaneRequest"
          }
        }
      },
      "additionalProperties": false
    },
    "ForecastResponse": {
      "required": [
        "errors",
        "lanes"
      ],
      "type": "object",
      "properties": {
        "lanes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ForecastLane"
          }
        },
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ForecastError"
          }
        }
      },
      "additionalProperties": false
    },
    "FullEquityObject": {
      "type": "object",
      "properties": {
        "index": {
          "type": "string"
        },
        "qualifier": {
          "type": "string"
        },
        "full_Ticker": {
          "type": "string"
        },
        "current_Value": {
          "format": "double",
          "type": "number"
        },
        "current_Data_Date": {
          "format": "date-time",
          "type": "string"
        },
        "previous_Value": {
          "format": "double",
          "type": "number"
        },
        "previous_Data_Date": {
          "format": "date-time",
          "type": "string"
        },
        "change": {
          "format": "double",
          "type": "number"
        },
        "pcnt_Change": {
          "format": "double",
          "type": "number"
        },
        "hi52": {
          "format": "double",
          "type": "number"
        },
        "low52": {
          "format": "double",
          "type": "number"
        },
        "stDev52": {
          "format": "double",
          "type": "number"
        },
        "mean52": {
          "format": "double",
          "type": "number"
        },
        "zValue52": {
          "format": "double",
          "type": "number"
        },
        "absZValue52": {
          "format": "double",
          "type": "number"
        },
        "index_Definition": {
          "$ref": "#/definitions/Index_Definition"
        },
        "qualifier_Item": {
          "$ref": "#/definitions/Qualifier_Item"
        },
        "qualifier_Level": {
          "$ref": "#/definitions/Qualifier_Level"
        },
        "data_Value": {
          "format": "double",
          "type": "number"
        },
        "data_Timestamp": {
          "format": "date-time",
          "type": "string"
        },
        "security_Id": {
          "type": "string"
        },
        "symbol": {
          "type": "string"
        },
        "security_Desc": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "GranularityJsonResponse": {
      "type": "object",
      "properties": {
        "index": {
          "type": "string"
        },
        "granularity": {
          "type": "string"
        },
        "granularity_level": {
          "type": "string"
        },
        "description": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "GranularityLevelJsonResponse": {
      "type": "object",
      "properties": {
        "code": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "description": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "IndexAggregationJsonResponse": {
      "description": "Represents aggregated security data over a time period",
      "type": "object",
      "properties": {
        "security_id": {
          "description": "Security identifier",
          "type": "string"
        },
        "min_data_date": {
          "format": "date",
          "description": "Start date of the aggregation period",
          "type": "string"
        },
        "max_data_date": {
          "format": "date",
          "description": "End date of the aggregation period",
          "type": "string"
        },
        "min_value": {
          "format": "double",
          "description": "Minimum value in the period",
          "type": "number"
        },
        "median_value": {
          "format": "double",
          "description": "Median value in the period",
          "type": "number"
        },
        "average_value": {
          "format": "double",
          "description": "Average (mean) value in the period",
          "type": "number"
        },
        "max_value": {
          "format": "double",
          "description": "Maximum value in the period",
          "type": "number"
        },
        "data_point_count": {
          "format": "int32",
          "description": "Number of data points included in the aggregation",
          "type": "integer"
        },
        "aggregation": {
          "description": "Aggregation type (e.g., \"monthly\", \"daily\", \"yearly\")",
          "enum": [
            "Summary",
            "Weekly",
            "Monthly",
            "Quarterly",
            "Yearly",
            "WTD"
          ],
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "IndexDataJsonRequest": {
      "description": "Request for retrieving ticker/index data for multiple ticker combinations",
      "type": "object",
      "properties": {
        "start_date": {
          "format": "date",
          "description": "Start date for the data range (YYYY-MM-DD)",
          "type": "string",
          "example": "2025-01-01"
        },
        "end_date": {
          "format": "date",
          "description": "End date for the data range (YYYY-MM-DD)",
          "type": "string",
          "example": "2025-01-20"
        },
        "tickers": {
          "description": "List of ticker combinations to retrieve",
          "type": "array",
          "items": {
            "$ref": "#/definitions/TickerDataQuery"
          }
        }
      },
      "additionalProperties": false
    },
    "IndexDataJsonResponse": {
      "description": "Represents a single ticker/index data point",
      "type": "object",
      "properties": {
        "index": {
          "description": "The ticker symbol/identifier",
          "type": "string",
          "example": "OTMS"
        },
        "granularity": {
          "description": "Specific granularity item",
          "type": "string",
          "example": "DAL"
        },
        "granularity_level": {
          "description": "Granularity level identifier",
          "type": "string",
          "example": "XMKT"
        },
        "data_date": {
          "format": "date",
          "description": "Date of the data point",
          "type": "string",
          "example": "2025-01-15"
        },
        "data_value": {
          "format": "double",
          "description": "The value for this data point",
          "type": "number",
          "example": 2.45
        }
      },
      "additionalProperties": false
    },
    "IndexDefinitionJsonResponse": {
      "type": "object",
      "properties": {
        "index": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "frequency": {
          "type": "string"
        },
        "unit_type": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "precision": {
          "format": "int32",
          "type": "integer"
        },
        "display_unit_type": {
          "type": "string"
        },
        "documentation_url": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "Index_Def": {
      "type": "object",
      "properties": {
        "index_name": {
          "type": "string"
        },
        "ticker": {
          "type": "string"
        },
        "frequency": {
          "type": "string"
        },
        "unit_type": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "precision": {
          "format": "int32",
          "type": "integer"
        },
        "display_unit_type": {
          "type": "string"
        },
        "documentation_url": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "Index_Definition": {
      "type": "object",
      "properties": {
        "index_Name": {
          "type": "string"
        },
        "ticker": {
          "type": "string"
        },
        "frequency": {
          "type": "string"
        },
        "unit_Type": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "precision": {
          "format": "int32",
          "type": "integer"
        },
        "display_Unit_Type": {
          "type": "string"
        },
        "documentation_Url": {
          "type": "string"
        },
        "data_Source": {
          "type": "string"
        },
        "periodicity": {
          "type": "string"
        },
        "product": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "IntermodalLaneJsonError": {
      "type": "object",
      "properties": {
        "original_lane": {
          "$ref": "#/definitions/IntermodalLaneJsonRequest"
        },
        "error_found": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "IntermodalLaneJsonRequest": {
      "required": [
        "destination",
        "destination_country_code",
        "origin",
        "origin_country_code"
      ],
      "type": "object",
      "properties": {
        "lane_id": {
          "type": "string",
          "example": "ATL-DAL"
        },
        "origin": {
          "minLength": 1,
          "type": "string",
          "example": "ATL"
        },
        "origin_country_code": {
          "enum": [
            "UNKNOWN",
            "USA",
            "CAN",
            "MEX"
          ],
          "type": "string",
          "example": "USA"
        },
        "destination": {
          "minLength": 1,
          "type": "string",
          "example": "DAL"
        },
        "destination_country_code": {
          "enum": [
            "UNKNOWN",
            "USA",
            "CAN",
            "MEX"
          ],
          "type": "string",
          "example": "USA"
        }
      },
      "additionalProperties": false
    },
    "IntermodalLaneJsonResponse": {
      "type": "object",
      "properties": {
        "lane_id": {
          "type": "string",
          "example": "ATL-MOB"
        },
        "miles": {
          "format": "double",
          "type": "number",
          "example": 320
        },
        "origin": {
          "type": "string",
          "example": "ATL"
        },
        "origin_market": {
          "type": "string",
          "example": "ATL"
        },
        "origin_country_code": {
          "enum": [
            "UNKNOWN",
            "USA",
            "CAN",
            "MEX"
          ],
          "type": "string",
          "example": "USA"
        },
        "destination": {
          "type": "string",
          "example": "MOB"
        },
        "destination_market": {
          "type": "string",
          "example": "MOB"
        },
        "destination_country_code": {
          "enum": [
            "UNKNOWN",
            "USA",
            "CAN",
            "MEX"
          ],
          "type": "string",
          "example": "USA"
        },
        "data_timestamp": {
          "format": "date-time",
          "type": "string",
          "example": "2026-01-01"
        },
        "request_date": {
          "format": "date-time",
          "type": "string",
          "readOnly": true,
          "example": "2026-01-02"
        },
        "rpm": {
          "format": "double",
          "type": "number",
          "example": 3.47
        },
        "rpm_high": {
          "format": "double",
          "type": "number",
          "example": 3.64
        },
        "rpm_low": {
          "format": "double",
          "type": "number",
          "example": 3.27
        },
        "rate": {
          "format": "double",
          "type": "number",
          "example": 1111.85
        },
        "rate_high": {
          "format": "double",
          "type": "number",
          "example": 1164.27
        },
        "rate_low": {
          "format": "double",
          "type": "number",
          "example": 1047.79
        },
        "confidence_score": {
          "format": "double",
          "type": "number",
          "example": 5
        },
        "origin_radius_expansion": {
          "format": "double",
          "type": "number",
          "example": 7
        },
        "destination_radius_expansion": {
          "format": "double",
          "type": "number",
          "example": 9
        },
        "timeframe_expansion": {
          "format": "double",
          "type": "number",
          "example": 90
        },
        "total_load_count": {
          "format": "int64",
          "type": "integer",
          "example": 133
        }
      },
      "additionalProperties": false
    },
    "IntermodalRateJsonRequest": {
      "required": [
        "end_date",
        "lanes",
        "start_date"
      ],
      "type": "object",
      "properties": {
        "start_date": {
          "format": "date-time",
          "type": "string",
          "example": "2026-01-01"
        },
        "end_date": {
          "format": "date-time",
          "type": "string",
          "example": "2026-02-01"
        },
        "lanes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IntermodalLaneJsonRequest"
          }
        }
      },
      "additionalProperties": false
    },
    "IntermodalRateJsonResponse": {
      "required": [
        "errors",
        "lanes"
      ],
      "type": "object",
      "properties": {
        "lanes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IntermodalLaneJsonResponse"
          }
        },
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IntermodalLaneJsonError"
          }
        }
      },
      "additionalProperties": false
    },
    "KMAContractLaneError": {
      "type": "object",
      "properties": {
        "original_lane": {
          "$ref": "#/definitions/KMAContractLaneRequest"
        },
        "error_found": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "KMAContractLaneRate": {
      "type": "object",
      "properties": {
        "lane_id": {
          "type": "string",
          "example": "303-MOB"
        },
        "miles": {
          "format": "double",
          "type": "number",
          "example": 320
        },
        "mileage_type": {
          "enum": [
            "UNKNOWN",
            "INPUT",
            "CALCULATED"
          ],
          "type": "string",
          "example": "input"
        },
        "origin": {
          "type": "string",
          "example": "303"
        },
        "origin_market": {
          "type": "string",
          "example": "ATL"
        },
        "origin_country_code": {
          "enum": [
            "UNKNOWN",
            "USA",
            "CAN",
            "MEX"
          ],
          "type": "string",
          "example": "USA"
        },
        "destination": {
          "type": "string",
          "example": "MOB"
        },
        "destination_market": {
          "type": "string",
          "example": "MOB"
        },
        "destination_country_code": {
          "enum": [
            "UNKNOWN",
            "USA",
            "CAN",
            "MEX"
          ],
          "type": "string",
          "example": "USA"
        },
        "equipment_type": {
          "enum": [
            "UNKNOWN",
            "VAN",
            "REEFER",
            "FLATBED"
          ],
          "type": "string",
          "example": "VAN"
        },
        "data_timestamp": {
          "format": "date-time",
          "type": "string",
          "example": "2025-01-01"
        },
        "request_date": {
          "format": "date-time",
          "type": "string",
          "readOnly": true,
          "example": "2025-01-02"
        },
        "rpm": {
          "format": "double",
          "type": "number",
          "example": 3.47
        },
        "rpm_high": {
          "format": "double",
          "type": "number",
          "example": 3.64
        },
        "rpm_low": {
          "format": "double",
          "type": "number",
          "example": 3.27
        },
        "rate": {
          "format": "double",
          "type": "number",
          "example": 1111.85
        },
        "rate_high": {
          "format": "double",
          "type": "number",
          "example": 1164.27
        },
        "rate_low": {
          "format": "double",
          "type": "number",
          "example": 1047.79
        },
        "fuel_surcharge_rpm": {
          "format": "double",
          "type": "number",
          "example": 0.37
        },
        "confidence_score": {
          "format": "double",
          "type": "number",
          "example": 5
        },
        "origin_radius_expansion": {
          "format": "double",
          "type": "number",
          "example": 7
        },
        "destination_radius_expansion": {
          "format": "double",
          "type": "number",
          "example": 9
        },
        "timeframe_expansion": {
          "format": "double",
          "type": "number",
          "example": 90
        },
        "total_load_count": {
          "format": "int64",
          "type": "integer",
          "example": 133
        },
        "total_shipper_count": {
          "format": "int64",
          "type": "integer",
          "example": 14
        }
      },
      "additionalProperties": false
    },
    "KMAContractLaneRequest": {
      "required": [
        "destination",
        "destination_country_code",
        "equipment_type",
        "origin",
        "origin_country_code"
      ],
      "type": "object",
      "properties": {
        "lane_id": {
          "type": "string",
          "example": "303-MOB"
        },
        "origin": {
          "minLength": 1,
          "type": "string",
          "example": "303"
        },
        "origin_country_code": {
          "enum": [
            "UNKNOWN",
            "USA",
            "CAN",
            "MEX"
          ],
          "type": "string",
          "example": "USA"
        },
        "destination": {
          "minLength": 1,
          "type": "string",
          "example": "MOB"
        },
        "destination_country_code": {
          "enum": [
            "UNKNOWN",
            "USA",
            "CAN",
            "MEX"
          ],
          "type": "string",
          "example": "USA"
        },
        "equipment_type": {
          "enum": [
            "UNKNOWN",
            "VAN",
            "REEFER",
            "FLATBED"
          ],
          "type": "string",
          "example": "VAN"
        },
        "input_miles": {
          "format": "double",
          "type": "number",
          "example": 320
        }
      },
      "additionalProperties": false
    },
    "KMAContractRateRequest": {
      "required": [
        "end_date",
        "lanes",
        "start_date"
      ],
      "type": "object",
      "properties": {
        "start_date": {
          "format": "date-time",
          "type": "string",
          "example": "2025-01-01"
        },
        "end_date": {
          "format": "date-time",
          "type": "string",
          "example": "2025-02-01"
        },
        "lanes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/KMAContractLaneRequest"
          }
        }
      },
      "additionalProperties": false
    },
    "KMAContractRateResponse": {
      "required": [
        "errors",
        "lanes"
      ],
      "type": "object",
      "properties": {
        "lanes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/KMAContractLaneRate"
          }
        },
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/KMAContractLaneError"
          }
        }
      },
      "additionalProperties": false
    },
    "KMALookupObject": {
      "type": "object",
      "properties": {
        "kmA_Code": {
          "type": "string"
        },
        "city_State": {
          "type": "string"
        },
        "reference_City": {
          "type": "string"
        },
        "reference_State": {
          "type": "string"
        },
        "country": {
          "type": "string"
        },
        "zip3": {
          "type": "string"
        },
        "lat": {
          "format": "double",
          "type": "number"
        },
        "lng": {
          "format": "double",
          "type": "number"
        },
        "airportCode": {
          "type": "string"
        },
        "actual_City": {
          "type": "string"
        },
        "actual_State": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "LaneScoreAverageRequest": {
      "required": [
        "end_date",
        "lanes",
        "start_date"
      ],
      "type": "object",
      "properties": {
        "start_date": {
          "format": "date-time",
          "type": "string",
          "example": "2023-10-01"
        },
        "end_date": {
          "format": "date-time",
          "type": "string",
          "example": "2023-10-02"
        },
        "lanes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/LaneScoreLane"
          }
        }
      },
      "additionalProperties": false
    },
    "LaneScoreAverageResponse": {
      "required": [
        "errors",
        "lane_scores"
      ],
      "type": "object",
      "properties": {
        "lane_scores": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/LaneScoreAverageResult"
          }
        },
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/LaneScoreError"
          }
        }
      },
      "additionalProperties": false
    },
    "LaneScoreAverageResult": {
      "type": "object",
      "properties": {
        "lane_id": {
          "type": "string"
        },
        "start_date": {
          "format": "date-time",
          "type": "string",
          "example": "2023-10-01"
        },
        "end_date": {
          "format": "date-time",
          "type": "string",
          "example": "2023-10-02"
        },
        "origin": {
          "type": "string",
          "example": "MOB"
        },
        "origin_country_code": {
          "type": "string",
          "example": "USA"
        },
        "destination": {
          "type": "string",
          "example": "ATL"
        },
        "destination_country_code": {
          "type": "string",
          "example": "USA"
        },
        "equipment_type": {
          "type": "string",
          "example": "VAN"
        },
        "lane_score": {
          "format": "int32",
          "type": "integer",
          "example": 70
        },
        "capacity_indicator": {
          "type": "string",
          "example": "Easy to Cover"
        }
      },
      "additionalProperties": false
    },
    "LaneScoreError": {
      "type": "object",
      "properties": {
        "lane": {
          "$ref": "#/definitions/LaneScoreLane"
        },
        "error": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "LaneScoreJsonError": {
      "type": "object",
      "properties": {
        "lane": {
          "$ref": "#/definitions/LaneScoreLaneJsonRequest"
        },
        "error": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "LaneScoreJsonRequest": {
      "required": [
        "end_date",
        "lanes",
        "start_date"
      ],
      "type": "object",
      "properties": {
        "start_date": {
          "format": "date-time",
          "type": "string",
          "example": "2023-10-01"
        },
        "end_date": {
          "format": "date-time",
          "type": "string",
          "example": "2023-10-02"
        },
        "lanes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/LaneScoreLaneJsonRequest"
          }
        }
      },
      "additionalProperties": false
    },
    "LaneScoreJsonResponse": {
      "required": [
        "errors",
        "lanes"
      ],
      "type": "object",
      "properties": {
        "lanes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/LaneScoreLaneJsonResponse"
          }
        },
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/LaneScoreJsonError"
          }
        }
      },
      "additionalProperties": false
    },
    "LaneScoreLane": {
      "required": [
        "destination",
        "destination_country_code",
        "equipment_type",
        "origin",
        "origin_country_code"
      ],
      "type": "object",
      "properties": {
        "lane_id": {
          "type": "string"
        },
        "origin": {
          "minLength": 1,
          "type": "string",
          "example": "MOB"
        },
        "destination": {
          "minLength": 1,
          "type": "string",
          "example": "ATL"
        },
        "equipment_type": {
          "enum": [
            "UNKNOWN",
            "VAN",
            "REEFER",
            "FLATBED"
          ],
          "type": "string",
          "example": "VAN"
        },
        "origin_country_code": {
          "enum": [
            "UNKNOWN",
            "USA",
            "CAN",
            "MEX"
          ],
          "type": "string",
          "example": "USA"
        },
        "destination_country_code": {
          "enum": [
            "UNKNOWN",
            "USA",
            "CAN",
            "MEX"
          ],
          "type": "string",
          "example": "USA"
        }
      },
      "additionalProperties": false
    },
    "LaneScoreLaneJsonRequest": {
      "required": [
        "destination",
        "destination_country_code",
        "equipment_type",
        "origin",
        "origin_country_code"
      ],
      "type": "object",
      "properties": {
        "lane_id": {
          "type": "string",
          "example": "303-MOB"
        },
        "origin": {
          "minLength": 1,
          "type": "string",
          "example": "303"
        },
        "destination": {
          "minLength": 1,
          "type": "string",
          "example": "MOB"
        },
        "equipment_type": {
          "enum": [
            "UNKNOWN",
            "VAN",
            "REEFER",
            "FLATBED"
          ],
          "type": "string",
          "example": "VAN"
        },
        "origin_country_code": {
          "enum": [
            "UNKNOWN",
            "USA",
            "CAN",
            "MEX"
          ],
          "type": "string",
          "example": "USA"
        },
        "destination_country_code": {
          "enum": [
            "UNKNOWN",
            "USA",
            "CAN",
            "MEX"
          ],
          "type": "string",
          "example": "USA"
        }
      },
      "additionalProperties": false
    },
    "LaneScoreLaneJsonResponse": {
      "type": "object",
      "properties": {
        "lane_id": {
          "type": "string",
          "example": "MOB-303"
        },
        "start_date": {
          "format": "date-time",
          "type": "string",
          "example": "2023-10-01"
        },
        "end_date": {
          "format": "date-time",
          "type": "string",
          "example": "2023-10-02"
        },
        "origin": {
          "type": "string",
          "example": "MOB"
        },
        "origin_market": {
          "type": "string",
          "example": "MOB"
        },
        "origin_country_code": {
          "type": "string",
          "example": "USA"
        },
        "destination": {
          "type": "string",
          "example": "303"
        },
        "destination_market": {
          "type": "string",
          "example": "ATL"
        },
        "destination_country_code": {
          "type": "string",
          "example": "USA"
        },
        "equipment_type": {
          "type": "string",
          "example": "VAN"
        },
        "lane_score": {
          "format": "int32",
          "type": "integer",
          "example": 70
        },
        "capacity_indicator": {
          "type": "string",
          "example": "Easy to Cover"
        }
      },
      "additionalProperties": false
    },
    "LastBookingVersionByDepartureDateItem": {
      "type": "object",
      "properties": {
        "date": {
          "type": "string",
          "example": "2025-08-01"
        },
        "confirmed_teu_count_global_index": {
          "$ref": "#/definitions/OceanBookingIndex"
        },
        "confirmed_transaction_count_global_index": {
          "$ref": "#/definitions/OceanBookingIndex"
        },
        "transit_time_days": {
          "$ref": "#/definitions/OceanBookingIndex"
        }
      },
      "additionalProperties": false
    },
    "LastBookingVersionByDepartureDateResponse": {
      "type": "object",
      "properties": {
        "origin": {
          "$ref": "#/definitions/OceanBookingLocation"
        },
        "destination": {
          "$ref": "#/definitions/OceanBookingLocation"
        },
        "start_date": {
          "type": "string",
          "example": "2025-08-01"
        },
        "end_date": {
          "type": "string",
          "example": "2025-08-02"
        },
        "values": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/LastBookingVersionByDepartureDateItem"
          }
        }
      },
      "additionalProperties": false
    },
    "LatestDataIndexObject": {
      "type": "object",
      "properties": {
        "date_requested": {
          "format": "date-time",
          "type": "string"
        },
        "data_Timestamp": {
          "format": "date-time",
          "type": "string"
        },
        "data_Value": {
          "format": "double",
          "type": "number"
        },
        "index": {
          "type": "string"
        },
        "qualifier": {
          "type": "string"
        },
        "qualifier_Code": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "MileageBatchRequest": {
      "type": "object",
      "properties": {
        "lanes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/MileageLaneInput"
          }
        }
      },
      "additionalProperties": false
    },
    "MileageBatchResponse": {
      "type": "object",
      "properties": {
        "lanes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/MileageLaneOutput"
          }
        },
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/MileageLaneError"
          }
        }
      },
      "additionalProperties": false
    },
    "MileageLaneError": {
      "type": "object",
      "properties": {
        "lane_id": {
          "type": "string"
        },
        "origin": {
          "type": "string"
        },
        "destination": {
          "type": "string"
        },
        "error": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "MileageLaneInput": {
      "type": "object",
      "properties": {
        "lane_id": {
          "type": "string"
        },
        "origin": {
          "type": "string"
        },
        "destination": {
          "type": "string"
        },
        "origin_country_code": {
          "type": "string"
        },
        "destination_country_code": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "MileageLaneOutput": {
      "type": "object",
      "properties": {
        "lane_id": {
          "type": "string"
        },
        "origin": {
          "type": "string"
        },
        "destination": {
          "type": "string"
        },
        "mileage": {
          "format": "double",
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "MyTracFailedLaneResponse": {
      "type": "object",
      "properties": {
        "lane_id": {
          "type": "string",
          "example": "751:786"
        },
        "od_pair": {
          "type": "string",
          "example": "751-786"
        },
        "error_message": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "MyTracLaneRequest": {
      "required": [
        "destination",
        "origin"
      ],
      "type": "object",
      "properties": {
        "origin": {
          "minLength": 1,
          "type": "string",
          "example": "751"
        },
        "destination": {
          "minLength": 1,
          "type": "string",
          "example": "786"
        },
        "equipment_type": {
          "enum": [
            "VAN",
            "REEFER",
            "FLATBED"
          ],
          "type": "string",
          "example": "VAN"
        },
        "lane_id": {
          "type": "string",
          "example": "751:786"
        }
      },
      "additionalProperties": false
    },
    "MyTracRateBulkRequest": {
      "type": "object",
      "properties": {
        "date": {
          "format": "date-time",
          "type": "string",
          "example": "2024-05-20"
        },
        "lanes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/MyTracLaneRequest"
          }
        }
      },
      "additionalProperties": false
    },
    "MyTracRateBulkResponse": {
      "type": "object",
      "properties": {
        "successful_lane_responses": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/MyTracSucessfulLaneResponse"
          },
          "readOnly": true
        },
        "failed_lane_responses": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/MyTracFailedLaneResponse"
          },
          "readOnly": true
        }
      },
      "additionalProperties": false
    },
    "MyTracSucessfulLaneResponse": {
      "type": "object",
      "properties": {
        "lane_id": {
          "type": "string",
          "example": "751:786"
        },
        "od_pair": {
          "type": "string",
          "example": "751-786"
        },
        "origin": {
          "type": "string",
          "example": "751"
        },
        "destination": {
          "type": "string",
          "example": "786"
        },
        "equipment_type": {
          "enum": [
            "VAN",
            "REEFER",
            "FLATBED"
          ],
          "type": "string",
          "example": "VAN"
        },
        "current_trac_miles": {
          "format": "double",
          "type": "number",
          "example": 19
        },
        "current_trac_rpm_adj": {
          "format": "double",
          "type": "number",
          "example": 14.69
        },
        "current_trac_rate_adj": {
          "format": "double",
          "type": "number",
          "example": 279.11
        },
        "avg_diff_rpm": {
          "format": "double",
          "type": "number",
          "example": 0.42
        },
        "avg_diff_rate": {
          "format": "double",
          "type": "number",
          "example": 7.98
        },
        "avg_miles": {
          "format": "double",
          "type": "number",
          "example": 19
        },
        "lookback": {
          "type": "string",
          "example": "14"
        },
        "num_transactions": {
          "format": "int32",
          "type": "integer",
          "example": 15741
        },
        "my_trac_rate": {
          "format": "double",
          "type": "number",
          "example": 271.13
        },
        "my_trac_rpm": {
          "format": "double",
          "type": "number",
          "example": 14.27
        },
        "data_timestamp": {
          "format": "date-time",
          "type": "string",
          "example": "2024-05-20T00:00:00Z"
        },
        "generated_on": {
          "format": "date-time",
          "type": "string",
          "example": "2025-11-04T00:00:00Z"
        },
        "fuel_surcharge_rpm": {
          "format": "double",
          "type": "number"
        },
        "linehaul_my_trac_rate": {
          "format": "double",
          "type": "number"
        },
        "linehaul_my_trac_rpm": {
          "format": "double",
          "type": "number"
        },
        "linehaul_current_trac_rate_adj": {
          "format": "double",
          "type": "number"
        },
        "linehaul_current_trac_rpm_adj": {
          "format": "double",
          "type": "number"
        },
        "avg_diff_linehaul_rate": {
          "format": "double",
          "type": "number"
        },
        "avg_diff_linehaul_rpm": {
          "format": "double",
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "OceanBookingIndex": {
      "type": "object",
      "properties": {
        "one_day_avg": {
          "format": "double",
          "type": "number",
          "example": 123.45
        },
        "seven_day_avg": {
          "format": "double",
          "type": "number",
          "example": 987.6
        },
        "fourteen_day_avg": {
          "format": "double",
          "type": "number",
          "example": 345.6
        }
      },
      "additionalProperties": false
    },
    "OceanBookingLocation": {
      "type": "object",
      "properties": {
        "code": {
          "type": "string",
          "example": "USSAV"
        },
        "port": {
          "type": "string",
          "example": "USSAV"
        },
        "port_name": {
          "type": "string",
          "example": "Savannah"
        },
        "country": {
          "type": "string",
          "example": "United States of America"
        },
        "type": {
          "type": "string",
          "example": "Port"
        }
      },
      "additionalProperties": false
    },
    "OceanLaneLocationsResponse": {
      "type": "object",
      "properties": {
        "origins": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/OceanBookingLocation"
          }
        },
        "destinations": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/OceanBookingLocation"
          }
        }
      },
      "additionalProperties": false
    },
    "OceanMetricsRequest": {
      "required": [
        "destination",
        "end_date",
        "origin",
        "start_date"
      ],
      "type": "object",
      "properties": {
        "origin": {
          "minLength": 1,
          "type": "string",
          "example": "USSAV"
        },
        "destination": {
          "minLength": 1,
          "type": "string",
          "example": "All"
        },
        "start_date": {
          "format": "date-time",
          "type": "string",
          "example": "2025-08-01"
        },
        "end_date": {
          "format": "date-time",
          "type": "string",
          "example": "2025-08-02"
        }
      },
      "additionalProperties": false
    },
    "PartnershipDataRequest": {
      "description": "Request model for the Partnership Integration API endpoint",
      "required": [
        "destination",
        "equipmentType",
        "origin"
      ],
      "type": "object",
      "properties": {
        "origin": {
          "description": "Origin location - can be ZIP code, ZIP3, or KMA",
          "minLength": 1,
          "type": "string"
        },
        "destination": {
          "description": "Destination location - can be ZIP code, ZIP3, or KMA",
          "minLength": 1,
          "type": "string"
        },
        "equipmentType": {
          "description": "Equipment type - must be VAN, REEFER, or FLATBED",
          "minLength": 1,
          "pattern": "^(VAN|REEFER|FLATBED)$",
          "type": "string"
        },
        "miles": {
          "format": "double",
          "description": "Optional length of haul in miles. If not provided, will be calculated",
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "PartnershipDataResponse": {
      "description": "Response model for the Partnership Integration API endpoint",
      "type": "object",
      "properties": {
        "origin": {
          "description": "Origin location - can be ZIP5 or ZIP3",
          "type": "string"
        },
        "destination": {
          "description": "Destination location - can be ZIP5 or ZIP3",
          "type": "string"
        },
        "miles": {
          "format": "double",
          "description": "Length of haul in miles (provided or calculated)",
          "type": "number"
        },
        "trac_rate": {
          "format": "double",
          "description": "TRAC spot rate per mile",
          "type": "number"
        },
        "trac_rate_high": {
          "format": "double",
          "description": "TRAC rate high value",
          "type": "number"
        },
        "trac_rate_low": {
          "format": "double",
          "description": "TRAC rate low value",
          "type": "number"
        },
        "trac_rpm": {
          "format": "double",
          "description": "TRAC rate per mile (RPM)",
          "type": "number"
        },
        "trac_rpm_high": {
          "format": "double",
          "description": "TRAC rate per mile high value",
          "type": "number"
        },
        "trac_rpm_low": {
          "format": "double",
          "description": "TRAC rate per mile low value",
          "type": "number"
        },
        "nti_usa_value": {
          "format": "double",
          "description": "National Truckload Index USA value",
          "type": "number"
        },
        "otri_origin_market": {
          "format": "double",
          "description": "Outbound Tender Rejection Index for origin market",
          "type": "number"
        },
        "otvi_origin_market": {
          "format": "double",
          "description": "Outbound Tender Volume Index for origin market",
          "type": "number"
        },
        "csteu_usa_value": {
          "format": "double",
          "description": "Contract Save to Expectations USA value",
          "type": "number"
        },
        "orail_usa_value": {
          "format": "double",
          "description": "Outbound Rail Percentage USA value",
          "type": "number"
        },
        "haul_value": {
          "format": "double",
          "description": "Average length of haul value (equipment-specific when available)",
          "type": "number"
        },
        "sonar_lane_score": {
          "format": "int32",
          "description": "SONAR Lane Score for the origin/destination pair",
          "type": "integer"
        },
        "equipment_type": {
          "enum": [
            "VAN",
            "REEFER",
            "FLATBED"
          ],
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "ProblemDetails": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "status": {
          "format": "int32",
          "type": "integer"
        },
        "detail": {
          "type": "string"
        },
        "instance": {
          "type": "string"
        }
      },
      "additionalProperties": { }
    },
    "ProcessingResult": {
      "type": "object",
      "properties": {
        "success": {
          "type": "boolean"
        },
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/FileError"
          }
        },
        "validRecordCount": {
          "format": "int32",
          "type": "integer",
          "readOnly": true
        },
        "invalidRecordCount": {
          "format": "int32",
          "type": "integer",
          "readOnly": true
        }
      },
      "additionalProperties": false
    },
    "Qualifier_Def": {
      "type": "object",
      "properties": {
        "qualifier": {
          "type": "string"
        },
        "qualifier_description": {
          "type": "string"
        },
        "qualifier_level_code": {
          "type": "string"
        },
        "qualifier_level_description": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "Qualifier_Item": {
      "type": "object",
      "properties": {
        "qualifier": {
          "type": "string"
        },
        "qualifier_Description": {
          "type": "string"
        },
        "shapefile": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "Qualifier_Level": {
      "type": "object",
      "properties": {
        "qualifier_Name": {
          "type": "string"
        },
        "qualifier_Code": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "SimpleForecastLane": {
      "type": "object",
      "properties": {
        "lane_id": {
          "type": "string",
          "example": "ATL-MOB"
        },
        "data_timestamp": {
          "format": "date-time",
          "type": "string",
          "example": "2025-12-01T00:00:00Z"
        },
        "origin": {
          "type": "string",
          "example": "ATL-MOB"
        },
        "destination": {
          "type": "string",
          "example": "MOB"
        },
        "equipment_type": {
          "type": "string",
          "example": "VAN"
        },
        "mileage_type": {
          "type": "string",
          "example": "INPUT"
        },
        "miles": {
          "format": "double",
          "type": "number",
          "example": 320
        },
        "current_customer_rate": {
          "format": "double",
          "type": "number",
          "example": 968
        },
        "forecast_index_value": {
          "format": "double",
          "type": "number",
          "example": 0.0853
        },
        "forecast_rpm_trac": {
          "format": "double",
          "type": "number",
          "example": 2.8
        },
        "forecast_rate_customer": {
          "format": "double",
          "type": "number",
          "example": 962.83
        }
      },
      "additionalProperties": false
    },
    "SimpleForecastResponse": {
      "type": "object",
      "properties": {
        "lanes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SimpleForecastLane"
          }
        },
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ForecastError"
          }
        }
      },
      "additionalProperties": false
    },
    "TickerAggregationJsonRequest": {
      "description": "Aggregation request for ticker security data.",
      "type": "object",
      "properties": {
        "tickers": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "start_date": {
          "format": "date",
          "type": "string"
        },
        "end_date": {
          "format": "date",
          "type": "string"
        },
        "aggregation": {
          "enum": [
            "Summary",
            "Weekly",
            "Monthly",
            "Quarterly",
            "Yearly",
            "WTD"
          ],
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "TickerDataQuery": {
      "description": "Represents a single ticker data query with its granularity parameters",
      "type": "object",
      "properties": {
        "ticker": {
          "description": "Shorthand ticker notation in format \"{Index}.{Granularity}\" (e.g., \"OTRI.DAL\")\nIf provided and valid, will be parsed into Index and Granularity1",
          "type": "string",
          "example": "OTMS.DAL"
        },
        "index": {
          "description": "The base ticker/index identifier (e.g., \"OTRI\")\nCan be set directly or parsed from Ticker",
          "type": "string",
          "example": "OTMS"
        },
        "granularity": {
          "description": "Primary granularity level (e.g., \"DAL\")\nCan be set directly or parsed from Ticker",
          "type": "string",
          "example": "DAL"
        },
        "granularity_level": {
          "description": "Granularity level identifier",
          "type": "string",
          "example": "XMKT"
        }
      },
      "additionalProperties": false
    },
    "TickerUpdate": {
      "type": "object",
      "properties": {
        "index": {
          "type": "string"
        },
        "latestUpdateDate": {
          "format": "date-time",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "TracForecastLaneStatistics": {
      "required": [
        "aggregation",
        "avg_forecast_index",
        "avg_forecast_rpm",
        "data_timestamp",
        "destination",
        "destination_country_code",
        "destination_market",
        "equipment_type",
        "highest_forecast_index",
        "highest_forecast_rpm",
        "lane_id",
        "lowest_forecast_index",
        "lowest_forecast_rpm",
        "median_forecast_index",
        "median_forecast_rpm",
        "mileage_type",
        "miles",
        "origin",
        "origin_country_code",
        "origin_market",
        "period_end_date",
        "period_start_date",
        "std_dev_forecast_index",
        "std_dev_forecast_rpm"
      ],
      "type": "object",
      "properties": {
        "lane_id": {
          "minLength": 1,
          "type": "string"
        },
        "miles": {
          "format": "double",
          "type": "number"
        },
        "mileage_type": {
          "minLength": 1,
          "type": "string"
        },
        "origin": {
          "minLength": 1,
          "type": "string"
        },
        "origin_market": {
          "minLength": 1,
          "type": "string"
        },
        "origin_country_code": {
          "minLength": 1,
          "type": "string"
        },
        "destination": {
          "minLength": 1,
          "type": "string"
        },
        "destination_market": {
          "minLength": 1,
          "type": "string"
        },
        "destination_country_code": {
          "minLength": 1,
          "type": "string"
        },
        "equipment_type": {
          "minLength": 1,
          "type": "string"
        },
        "data_timestamp": {
          "format": "date-time",
          "type": "string"
        },
        "period_start_date": {
          "format": "date-time",
          "type": "string"
        },
        "period_end_date": {
          "format": "date-time",
          "type": "string"
        },
        "aggregation": {
          "minLength": 1,
          "type": "string"
        },
        "lowest_forecast_rpm": {
          "format": "double",
          "type": "number"
        },
        "highest_forecast_rpm": {
          "format": "double",
          "type": "number"
        },
        "median_forecast_rpm": {
          "format": "double",
          "type": "number"
        },
        "avg_forecast_rpm": {
          "format": "double",
          "type": "number"
        },
        "std_dev_forecast_rpm": {
          "format": "double",
          "type": "number"
        },
        "lowest_forecast_index": {
          "format": "double",
          "type": "number"
        },
        "highest_forecast_index": {
          "format": "double",
          "type": "number"
        },
        "median_forecast_index": {
          "format": "double",
          "type": "number"
        },
        "avg_forecast_index": {
          "format": "double",
          "type": "number"
        },
        "std_dev_forecast_index": {
          "format": "double",
          "type": "number"
        },
        "lowest_forecast_customer_rate": {
          "format": "double",
          "type": "number"
        },
        "highest_forecast_customer_rate": {
          "format": "double",
          "type": "number"
        },
        "median_forecast_customer_rate": {
          "format": "double",
          "type": "number"
        },
        "avg_forecast_customer_rate": {
          "format": "double",
          "type": "number"
        },
        "std_dev_forecast_customer_rate": {
          "format": "double",
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "TracForecastStatisticsJsonRequest": {
      "required": [
        "aggregation",
        "end_date",
        "lanes",
        "start_date"
      ],
      "type": "object",
      "properties": {
        "start_date": {
          "format": "date-time",
          "type": "string"
        },
        "end_date": {
          "format": "date-time",
          "type": "string"
        },
        "aggregation": {
          "minLength": 1,
          "type": "string"
        },
        "lanes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TracForecastStatisticsLaneJsonRequest"
          }
        }
      },
      "additionalProperties": false
    },
    "TracForecastStatisticsJsonResponse": {
      "required": [
        "errors",
        "lanes"
      ],
      "type": "object",
      "properties": {
        "lanes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TracForecastLaneStatistics"
          }
        },
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TracStatisticsJsonError"
          }
        }
      },
      "additionalProperties": false
    },
    "TracForecastStatisticsLaneJsonRequest": {
      "required": [
        "destination",
        "destination_country_code",
        "equipment_type",
        "origin",
        "origin_country_code"
      ],
      "type": "object",
      "properties": {
        "lane_id": {
          "type": "string"
        },
        "origin": {
          "minLength": 1,
          "type": "string"
        },
        "origin_country_code": {
          "minLength": 1,
          "type": "string"
        },
        "destination": {
          "minLength": 1,
          "type": "string"
        },
        "destination_country_code": {
          "minLength": 1,
          "type": "string"
        },
        "equipment_type": {
          "minLength": 1,
          "type": "string"
        },
        "input_miles": {
          "format": "double",
          "type": "number"
        },
        "current_customer_rate": {
          "format": "double",
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "TracLaneJsonError": {
      "type": "object",
      "properties": {
        "original_lane": {
          "$ref": "#/definitions/TracLaneJsonRequest"
        },
        "error_found": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "TracLaneJsonRequest": {
      "required": [
        "destination",
        "destination_country_code",
        "equipment_type",
        "lane_id",
        "origin",
        "origin_country_code"
      ],
      "type": "object",
      "properties": {
        "lane_id": {
          "minLength": 1,
          "type": "string",
          "example": "303-MOB"
        },
        "origin": {
          "minLength": 1,
          "type": "string",
          "example": "303"
        },
        "origin_country_code": {
          "enum": [
            "UNKNOWN",
            "USA",
            "CAN",
            "MEX"
          ],
          "type": "string",
          "example": "USA"
        },
        "destination": {
          "minLength": 1,
          "type": "string",
          "example": "MOB"
        },
        "destination_country_code": {
          "enum": [
            "UNKNOWN",
            "USA",
            "CAN",
            "MEX"
          ],
          "type": "string",
          "example": "USA"
        },
        "equipment_type": {
          "enum": [
            "UNKNOWN",
            "VAN",
            "REEFER",
            "FLATBED"
          ],
          "type": "string",
          "example": "FLATBED"
        },
        "input_miles": {
          "format": "double",
          "type": "number",
          "example": 320
        }
      },
      "additionalProperties": false
    },
    "TracLaneJsonResponse": {
      "type": "object",
      "properties": {
        "lane_id": {
          "type": "string",
          "example": "303-MOB"
        },
        "miles": {
          "format": "double",
          "type": "number",
          "example": 320
        },
        "mileage_type": {
          "enum": [
            "UNKNOWN",
            "INPUT",
            "CALCULATED"
          ],
          "type": "string",
          "example": "input"
        },
        "origin": {
          "type": "string",
          "example": "303"
        },
        "origin_market": {
          "type": "string",
          "example": "ATL"
        },
        "origin_country_code": {
          "enum": [
            "UNKNOWN",
            "USA",
            "CAN",
            "MEX"
          ],
          "type": "string",
          "example": "USA"
        },
        "destination": {
          "type": "string",
          "example": "MOB"
        },
        "destination_market": {
          "type": "string",
          "example": "MOB"
        },
        "destination_country_code": {
          "enum": [
            "UNKNOWN",
            "USA",
            "CAN",
            "MEX"
          ],
          "type": "string",
          "example": "USA"
        },
        "equipment_type": {
          "enum": [
            "UNKNOWN",
            "VAN",
            "REEFER",
            "FLATBED"
          ],
          "type": "string",
          "example": "FLATBED"
        },
        "data_timestamp": {
          "format": "date-time",
          "type": "string",
          "example": "2025-01-01"
        },
        "request_date": {
          "format": "date-time",
          "type": "string",
          "readOnly": true,
          "example": "2025-01-02"
        },
        "rpm": {
          "format": "double",
          "type": "number",
          "example": 2.33
        },
        "rpm_high": {
          "format": "double",
          "type": "number",
          "example": 2.53
        },
        "rpm_low": {
          "format": "double",
          "type": "number",
          "example": 2.16
        },
        "rate": {
          "format": "double",
          "type": "number",
          "example": 746.81
        },
        "rate_high": {
          "format": "double",
          "type": "number",
          "example": 808.5
        },
        "rate_low": {
          "format": "double",
          "type": "number",
          "example": 691.66
        },
        "confidence_score": {
          "format": "double",
          "type": "number",
          "example": 5
        },
        "origin_radius_expansion": {
          "format": "double",
          "type": "number",
          "example": 18
        },
        "destination_radius_expansion": {
          "format": "double",
          "type": "number",
          "example": 18
        },
        "timeframe_expansion": {
          "format": "double",
          "type": "number",
          "example": 1
        },
        "total_load_count": {
          "format": "int64",
          "type": "integer",
          "example": 8
        },
        "total_contributor_count": {
          "format": "int64",
          "type": "integer",
          "example": 5
        }
      },
      "additionalProperties": false
    },
    "TracRateJsonRequest": {
      "required": [
        "end_date",
        "lanes",
        "start_date"
      ],
      "type": "object",
      "properties": {
        "start_date": {
          "format": "date-time",
          "type": "string",
          "example": "2023-10-01"
        },
        "end_date": {
          "format": "date-time",
          "type": "string",
          "example": "2023-10-02"
        },
        "lanes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TracLaneJsonRequest"
          }
        }
      },
      "additionalProperties": false
    },
    "TracRateJsonResponse": {
      "required": [
        "errors",
        "lanes"
      ],
      "type": "object",
      "properties": {
        "lanes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TracLaneJsonResponse"
          }
        },
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TracLaneJsonError"
          }
        }
      },
      "additionalProperties": false
    },
    "TracRateLaneStatistics": {
      "required": [
        "aggregation",
        "avg_confidence_score",
        "avg_destination_radius_expansion",
        "avg_origin_radius_expansion",
        "avg_rate",
        "avg_rate_high",
        "avg_rate_low",
        "avg_rpm",
        "avg_rpm_high",
        "avg_rpm_low",
        "avg_timeframe_expansion",
        "avg_total_contributor_count",
        "avg_total_load_count",
        "destination",
        "destination_country_code",
        "destination_market",
        "equipment_type",
        "generated_on",
        "highest_rate",
        "highest_rpm",
        "lane_id",
        "lowest_rate",
        "lowest_rpm",
        "mileage_type",
        "miles",
        "origin",
        "origin_country_code",
        "origin_market",
        "period_end_date",
        "period_start_date",
        "std_dev_rate",
        "std_dev_rpm"
      ],
      "type": "object",
      "properties": {
        "lane_id": {
          "minLength": 1,
          "type": "string"
        },
        "miles": {
          "format": "double",
          "type": "number"
        },
        "mileage_type": {
          "minLength": 1,
          "type": "string"
        },
        "origin": {
          "minLength": 1,
          "type": "string"
        },
        "origin_market": {
          "minLength": 1,
          "type": "string"
        },
        "origin_country_code": {
          "minLength": 1,
          "type": "string"
        },
        "destination": {
          "minLength": 1,
          "type": "string"
        },
        "destination_market": {
          "minLength": 1,
          "type": "string"
        },
        "destination_country_code": {
          "minLength": 1,
          "type": "string"
        },
        "equipment_type": {
          "minLength": 1,
          "type": "string"
        },
        "generated_on": {
          "format": "date",
          "type": "string"
        },
        "period_start_date": {
          "format": "date",
          "type": "string"
        },
        "period_end_date": {
          "format": "date",
          "type": "string"
        },
        "aggregation": {
          "minLength": 1,
          "type": "string"
        },
        "lowest_rpm": {
          "format": "double",
          "type": "number"
        },
        "highest_rpm": {
          "format": "double",
          "type": "number"
        },
        "std_dev_rpm": {
          "format": "double",
          "type": "number"
        },
        "lowest_rate": {
          "format": "double",
          "type": "number"
        },
        "highest_rate": {
          "format": "double",
          "type": "number"
        },
        "std_dev_rate": {
          "format": "double",
          "type": "number"
        },
        "avg_rpm": {
          "format": "double",
          "type": "number"
        },
        "avg_rpm_high": {
          "format": "double",
          "type": "number"
        },
        "avg_rpm_low": {
          "format": "double",
          "type": "number"
        },
        "avg_rate": {
          "format": "double",
          "type": "number"
        },
        "avg_rate_high": {
          "format": "double",
          "type": "number"
        },
        "avg_rate_low": {
          "format": "double",
          "type": "number"
        },
        "avg_confidence_score": {
          "format": "double",
          "type": "number"
        },
        "avg_origin_radius_expansion": {
          "format": "double",
          "type": "number"
        },
        "avg_destination_radius_expansion": {
          "format": "double",
          "type": "number"
        },
        "avg_timeframe_expansion": {
          "format": "double",
          "type": "number"
        },
        "avg_total_load_count": {
          "format": "double",
          "type": "number"
        },
        "avg_total_contributor_count": {
          "format": "double",
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "TracRateStatisticsJsonRequest": {
      "required": [
        "aggregation",
        "end_date",
        "lanes",
        "start_date"
      ],
      "type": "object",
      "properties": {
        "start_date": {
          "format": "date-time",
          "type": "string"
        },
        "end_date": {
          "format": "date-time",
          "type": "string"
        },
        "aggregation": {
          "minLength": 1,
          "type": "string"
        },
        "lanes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TracStatisticsLaneJsonRequest"
          }
        }
      },
      "additionalProperties": false
    },
    "TracRateStatisticsResponse": {
      "required": [
        "errors",
        "lanes"
      ],
      "type": "object",
      "properties": {
        "lanes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TracRateLaneStatistics"
          }
        },
        "errors": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TracStatisticsJsonError"
          }
        }
      },
      "additionalProperties": false
    },
    "TracStatisticsJsonError": {
      "type": "object",
      "properties": {
        "lane_id": {
          "type": "string"
        },
        "origin": {
          "type": "string"
        },
        "origin_country_code": {
          "type": "string"
        },
        "destination": {
          "type": "string"
        },
        "destination_country_code": {
          "type": "string"
        },
        "equipment_type": {
          "type": "string"
        },
        "input_miles": {
          "format": "double",
          "type": "number"
        },
        "error_found": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "TracStatisticsLaneJsonRequest": {
      "required": [
        "destination",
        "destination_country_code",
        "equipment_type",
        "origin",
        "origin_country_code"
      ],
      "type": "object",
      "properties": {
        "lane_id": {
          "type": "string"
        },
        "origin": {
          "minLength": 1,
          "type": "string"
        },
        "origin_country_code": {
          "minLength": 1,
          "type": "string"
        },
        "destination": {
          "minLength": 1,
          "type": "string"
        },
        "destination_country_code": {
          "minLength": 1,
          "type": "string"
        },
        "equipment_type": {
          "minLength": 1,
          "type": "string"
        },
        "input_miles": {
          "format": "double",
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "UserCredentials": {
      "type": "object",
      "properties": {
        "username": {
          "type": "string"
        },
        "password": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "XMKTLookupObject": {
      "type": "object",
      "properties": {
        "kmA_Reference_Code": {
          "type": "string"
        },
        "xmkT_Name": {
          "type": "string"
        },
        "reference_City": {
          "type": "string"
        },
        "reference_State": {
          "type": "string"
        },
        "country": {
          "type": "string"
        },
        "zip3": {
          "type": "string"
        },
        "airportCode": {
          "type": "string"
        },
        "actual_City": {
          "type": "string"
        },
        "actual_State": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "ZipLookUpObject": {
      "type": "object",
      "properties": {
        "zip3": {
          "type": "string"
        },
        "city": {
          "type": "string"
        },
        "state": {
          "type": "string"
        },
        "qualifier": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  }
}