{ "openapi": "3.0.1", "info": { "version": "1.0", "title": "MPact.Rate", "summary": "Allows permissioned users to call and return our MPact.Rate (Spot) rates", "description": "MPact.Rate is a secure, private analytics domain that is only accessible to McLeod customers who participate in Market Insight. \nAccess to MPact.Rate requires multi-factor authentication to confirm the user's identity and affiliation with McLeod.\n\nMarket Insight/MPact.Rate aggregated rate data is collected from over 1,000 carriers and brokers every night, from freight that actually moved, then aggregated to give McLeod customers an understanding of the current market rates by lane, by equipment type, containing both buy and sell sides of the transaction. Market Insight/MPact.Rate is the most reliable rate data available anywhere because it is based on actual transactions.\n\nMPact.Rate provides users with a more detailed, up-to-date look at the changes in freight rates from one week to the next, current market order and rate trends, rate analysis and net margin trends information. MPact.Rate enables McLeod customers to make data-driven decisions and help optimize pricing strategies, freight procurement, and equipment type.\n\n## The MPact.Rate API\nMPact.Rate has two endpoints - Buy and Sell. Both endpoints have the same parameters, the Buy endpoint returning buy rates and the Sell endpoint returning sell rates. The rates provided in this endpoint are determined by a variety of factors, including the type of trailer and carrier, the ship date, the origin and destination zones, the market or zip code, the mileage group, and whether or not fuel is included. \n\nThe MPact.Rate API provides a wealth of information about freight rates, including the average rate, the minimum rate, the maximum rate, the quartiles (different price points that are available), the number of orders placed, the number of contributors, and the number of days over which the data was analyzed. Our rate data is updated daily and origin-destination pairs need to be defined with Zip3s (a “Zip3” is simply the first 3 characters in any zip code).\n\n## Reasons to use the MPact.Rate API:\n1. Gain insights into the freight market by tracking trends and changes for specific lanes, OD pairs and equipment types to stay ahead of the curve.\n2. Make informed decisions about pricing and negotiations by comparing freight rates in real-time.\n3. Achieve cost-efficiency by analyzing rates and other cost-related variables.\n4. Manage risk by understanding future rate movements and market rate fluctuations over time and taking steps to mitigate any potential disruptions.\n5. Identify outliers by tracking freight rate quartiles to assess unusual market conditions or unique customer requirements.\n6. Evaluate performance by benchmarking your averages against industry averages to identify areas for improvement and identifyany underperforming areas..\n\n\n\n## Getting Started\nYou can get started immediately by registering an Innovation Hub account and requesting a trial key.\n\n### Registering an account\nTo create an account, go to:\nhttps://innovationhub.mcleodsoftware.com/register/\n\n### Requesting a key\nTo request a key, go to:\nhttps://innovationhub.mcleodsoftware.com/apis\n\n### Example call\nThis is an example call to get sell rates:\n`https://api.mcleodsoftware.com/mpact-sandbox/rates/sell?originzip=810&destinationZip=729&trailerType=Van&includeFuel=true&includequartiles=True&carrierType=Asset`\n\n### Example response\nThis is an example result of getting sell rates:\n```json\n{\n \"average\": 4.8,\n \"minimum\": 2.45,\n \"maximum\": 7.11,\n \"quartile1\": 4.16,\n \"quartile2\": 5.11,\n \"quartile3\": 5.23,\n \"sourceInfo\": {\n \"orders\": 15,\n \"contributors\": 8,\n \"days\": 7,\n \"origin\": \"AL_BIR\",\n \"destination\": \"FL_LAK\",\n \"includeFuel\": true,\n \"trailerType\": \"Flatbed\",\n \"transactionType\": \"Both\",\n \"carrierType\": \"Asset\"\n }\n}\n```\n\n## More information\nMore information and examples can be found in the details of each endpoint.", "termsOfService": "", "contact": { "email": "datascience@mcleodsoftware.com", "name": "Data Science", "url": "https://innovationhub.mcleodsoftware.com" }, "license": { "url": "https://innovationhub.mcleodsoftware.com", "name": "License" } }, "servers": [ { "url": "https://api.mcleodsoftware.com/mpact-sandbox", "description": "Sandbox" }, { "url": "https://api.mcleodsoftware.com/mpact", "description": "Live" } ], "paths": { "/rates/buy": { "get": { "summary": "Buy rates", "description": "The MPact.Rate \"Buy rates\" end point provides the buy rate information for an area or OD pair. Buy rates typically refer to the rates that carriers or brokers pay for freight services from other carriers or operators. The data provided includes average rates, minimum and maximum rates, quartiles, number of orders, contributors and days, and trailer and carrier type at a minimum.\n\n> When retrieving data for a given lane, the API seeks first the lowest level of granularity possible, starting with originZip to destinationZip for the past 7 days, 14 days, or 28 days until some data is returned. If nothing is returned for 3-digit zip, it will then retrieve values for market to market for past 7 days, 14 days, 28 days, 60 days, 90 days, 180 days, or 365 days returning whichever is found first.", "operationId": "getBuyRate", "parameters": [ { "name": "X-Api-Key", "in": "header", "description": "A key issued by the Innovation Hub website.", "required": true, "schema": { "type": "string" } }, { "name": "originZip", "in": "query", "description": "The first three digits of a zip code to represent the origin.", "required": true, "schema": { "type": "string", "minLength": 3, "maxLength": 3, "examples": [ "359" ] } }, { "name": "destinationZip", "in": "query", "description": "The first three digits of a zip code to represent the destination.", "required": true, "schema": { "type": "string", "minLength": 3, "maxLength": 3, "examples": [ "056" ] } }, { "name": "trailerType", "in": "query", "description": "The type of trailer to be used in the rate.", "required": true, "schema": { "type": "string", "enum": [ "Van", "Reefer", "Flatbed" ], "examples": [ "Van" ] } }, { "name": "includeFuel", "in": "query", "description": "Whether or not to include the fuel in the rate (true or false).", "schema": { "type": "boolean", "examples": [ true ] } }, { "name": "includeQuartiles", "in": "query", "description": "Whether or not to include Quartiles in the rate (true or false).", "schema": { "type": "boolean" } }, { "name": "carrierType", "in": "query", "description": "The type of carrier to be used in the rate.", "schema": { "type": "string", "enum": [ "Asset", "Broker" ], "examples": [ "Asset" ] } }, { "name": "scac", "in": "query", "description": "Your companies SCAC code or customer code.", "schema": { "type": "string", "examples": [ "MCLD" ] } } ], "responses": { "200": { "description": "Response returned, in JSON format, by the API call. Status code \"200 OK\" indicates that the request has succeeded and response was successfully returned.", "content": { "application/json": { "schema": { "type": "object", "properties": { "average": { "type": "number", "description": "The mean rate per mile observed.", "format": "float", "examples": [ 4.8 ] }, "minimum": { "type": "number", "description": "The minimum rate per mile observed.", "format": "float", "examples": [ 2.45 ] }, "maximum": { "type": "number", "description": "The maximum rate per mile observed.", "format": "float", "examples": [ 7.11 ] }, "quartile1": { "type": "number", "description": "The low-end (25th percentile) rate for the lane.", "format": "float", "examples": [ 4.16 ] }, "quartile2": { "type": "number", "description": "The middle (50th percentile) rate for the lane.", "format": "float", "examples": [ 5.11 ] }, "quartile3": { "type": "number", "description": "The high-end (75th percentile) rate for the lane.", "format": "float", "examples": [ 5.23 ] }, "sourceInfo": { "type": "object", "description": "Information about the source of this rate.", "properties": { "orders": { "type": "integer", "description": "The total number of orders aggregated to calculate the rate per mile; is not weighted. The orders table in the LoadMaster database is the source of orders information.", "examples": [ 15 ] }, "contributors": { "type": "integer", "description": "The total number of contributors (unique SCAC codes) aggregated to calculate the rate per mile.", "examples": [ 8 ] }, "days": { "type": "integer", "description": "The total number of days by which rate per mile is averaged; denominations of 7, 14, 30, 60, 90, 180 or 365 days.", "examples": [ 7 ] }, "origin": { "type": "string", "description": "The Key Market Area (KMA) code associated with the first three characters of the origin zip/postal code provided in the API call by the client. The orig_dest_rate table in the LoadMaster database is the source of origin information.", "examples": [ "AL_BIR" ] }, "destination": { "type": "string", "description": "The Key Market Area (KMA) code associated with first three characters of the destination zip/postal code provided in the API call by the Client. The orig_dest_rate table in the LoadMaster database is the source of destination information.", "examples": [ "FL_LAK" ] }, "includeFuel": { "type": "boolean", "description": "A boolean value provided in the API call by the client (for which the rates in the response apply); “true” to include fuel, “false” to exclude fuel." }, "trailerType": { "type": "string", "enum": [ "Van", "Flatbed", "Reefer" ], "description": "The equipment type provided in the API call by the client (for which the rates in the response apply). The www_equipment_type table in the LoadMaster database is the source of trailerType information.", "examples": [ "Flatbed" ] }, "transactionType": { "type": "string", "enum": [ "Spot", "Contract", "Both" ], "description": "Transaction type is “Spot,” “Contract” or “Both.” This is currently defaulted to “Both.” In the future, the option for spot or contract will be provided in the call.", "examples": [ "Both" ] }, "carrierType": { "type": "string", "enum": [ "Asset", "Broker" ], "description": "The carrier type provided in the API call by the client (for which the rates in the response apply); “Asset” or “Broker.” Note that when “Buy” rates are called, the default carrier type is set to Broker.", "examples": [ "Asset" ] } } } } }, "examples": { "Example 1": { "value": { "average": 5.8, "minimum": 2.45, "maximum": 7.11, "quartile1": 4.16, "quartile2": 5.11, "quartile3": 5.23, "sourceInfo": { "orders": 15, "contributors": 8, "days": 7, "origin": "AL_BIR", "destination": "FL_LAK", "includeFuel": true, "trailerType": "Van", "transactionType": "Spot", "carrierType": "Asset" } } }, "Example 2": { "value": { "average": 6.8, "minimum": 2.45, "maximum": 7.11, "quartile1": 4.16, "quartile2": 5.11, "quartile3": 5.23, "sourceInfo": { "orders": 15, "contributors": 8, "days": 7, "origin": "AL_BIR", "destination": "FL_LAK", "includeFuel": true, "trailerType": "Van", "transactionType": "Spot", "carrierType": "Asset" } } } } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } } } }, "security": [] } }, "/rates/sell": { "get": { "summary": "Sell rates", "description": "The MPact.Rate \"Sell rates\" end point provides the sell rate information for an area or OD pair. This is the rate for both brokers and carriers to provide visibility into customer’s billing rates. The data provided includes average rates, minimum and maximum rates, quartiles, number of orders, contributors and days, and trailer and carrier type at a minimum.\n\n> When retrieving data for a given lane, the API seeks first the lowest level of granularity possible, starting with originZip to destinationZip for the past 7 days, 14 days, or 28 days until some data is returned. If nothing is returned for 3 digit zip, it will then retrieve values for market to market for past 7 days, 14 days, 28 days, 60 days, 90 days, 180 days, or 365 days returning whichever is found first.\n", "operationId": "getSellRate", "parameters": [ { "name": "X-Api-Key", "in": "header", "description": "A key issued by the Innovation Hub website.", "required": true, "schema": { "type": "string" } }, { "name": "originZip", "in": "query", "description": "The first three digits of a zip code to represent the origin.", "required": true, "schema": { "type": "string", "minLength": 3, "maxLength": 3, "examples": [ "359" ] } }, { "name": "destinationZip", "in": "query", "description": "The first three digits of a zip code to represent the destination.", "required": true, "schema": { "type": "string", "minLength": 3, "maxLength": 3, "examples": [ "056" ] } }, { "name": "trailerType", "in": "query", "description": "The type of trailer to be used in the rate.", "required": true, "schema": { "type": "string", "enum": [ "Van", "Reefer", "Flatbed" ], "examples": [ "Van" ] } }, { "name": "includeFuel", "in": "query", "description": "whether or not to include the fuel in the rate (true or false).", "schema": { "type": "boolean", "examples": [ true ] } }, { "name": "includeQuartiles", "in": "query", "description": "Whether or not to include Quartiles in the rate (true or false).", "schema": { "type": "boolean" } }, { "name": "carrierType", "in": "query", "description": "The type of carrier to be used in the rate.", "required": true, "schema": { "type": "string", "enum": [ "Asset", "Broker" ], "examples": [ "Asset" ] } }, { "name": "scac", "in": "query", "description": "Your companies SCAC code or customer code.", "schema": { "type": "string", "examples": [ "MCLD" ] } } ], "responses": { "200": { "description": "Response returned, in JSON format, by the API call. Status code \"200 OK\" indicates that the request has succeeded and response was successfully returned.", "content": { "application/json": { "schema": { "type": "object", "properties": { "average": { "type": "number", "description": "The mean rate per mile observed.", "format": "float", "examples": [ 4.8 ] }, "minimum": { "type": "number", "description": "The minimum rate per mile observed.", "format": "float", "examples": [ 2.45 ] }, "maximum": { "type": "number", "description": "The maximum rate per mile observed.", "format": "float", "examples": [ 7.11 ] }, "quartile1": { "type": "number", "description": "The low-end (25th percentile) rate for the lane.", "format": "float", "examples": [ 4.16 ] }, "quartile2": { "type": "number", "description": "The middle (50th percentile) rate for the lane.", "format": "float", "examples": [ 5.11 ] }, "quartile3": { "type": "number", "description": "The high-end (75th percentile) rate for the lane.", "format": "float", "examples": [ 5.23 ] }, "sourceInfo": { "type": "object", "description": "Information about the source of this rate.", "properties": { "orders": { "type": "integer", "description": "The total number of orders aggregated to calculate the rate per mile; is not weighted. The orders table in the LoadMaster database is the source of orders information.", "examples": [ 15 ] }, "contributors": { "type": "integer", "description": "The total number of contributors (unique SCAC codes) aggregated to calculate the rate per mile.", "examples": [ 8 ] }, "days": { "type": "integer", "description": "The total number of days by which rate per mile is averaged; denominations of 7, 14, 30, 60, 90, 180 or 365 days.", "examples": [ 7 ] }, "origin": { "type": "string", "description": "The Key Market Area (KMA) code associated with the first three characters of the origin zip/postal code provided in the API call by the client. The orig_dest_rate table in the LoadMaster database is the source of origin information.", "examples": [ "AL_BIR" ] }, "destination": { "type": "string", "description": "The Key Market Area (KMA) code associated with first three characters of the destination zip/postal code provided in the API call by the Client. The orig_dest_rate table in the LoadMaster database is the source of destination information.", "examples": [ "FL_LAK" ] }, "includeFuel": { "type": "boolean", "description": "A boolean value provided in the API call by the client (for which the rates in the response apply); “true” to include fuel, “false” to exclude fuel." }, "trailerType": { "type": "string", "enum": [ "Van", "Flatbed", "Reefer" ], "description": "The equipment type provided in the API call by the client (for which the rates in the response apply). The www_equipment_type table in the LoadMaster database is the source of trailerType information.", "examples": [ "Flatbed" ] }, "transactionType": { "$ref": "#/components/schemas/transactionType", "type": "string", "enum": [ "Spot", "Contract", "Both" ], "examples": [ "Both" ] }, "carrierType": { "type": "string", "enum": [ "Asset", "Broker" ], "description": "The carrier type provided in the API call by the client (for which the rates in the response apply); “Asset” or “Broker.” Note that when “Buy” rates are called, the default carrier type is set to Broker.", "examples": [ "Asset" ] } } } } } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } } } }, "security": [] } } }, "components": { "securitySchemes": { "API-Key": { "type": "apiKey", "name": "x-api-key", "in": "header" } }, "schemas": { "transactionType": { "type": "string", "enum": [ "Spot", "Contract", "Both" ], "description": "Transaction type is “Spot,” “Contract” or “Both.” This is currently defaulted to “Both.” In the future, the option for spot or contract will be provided in the call.", "examples": [ "Both" ] } } }, "x-internal": false }