{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"6f4ff79f-bf37-40b5-87e0-c29d8aba988f","name":"eHub Interfaces","description":"# Warranty\n\nExertis UK does not provide any warranty as to the availability, performance, accuracy or suitability of the API or data provided by it. Exertis shall not be liable for any loss whatsoever which might arise from the use of this API. Exertis reserve the right to change, withdraw or replace the API at any time without notice, or refuse or remove access to it. By using these APIs you agree to our standard acceptable usage policy as published at [https://www.exertis.co.uk/policy-accept.php](https://www.exertis.co.uk/policy-accept.php)\n\n# Getting started\n\nBefore you can register with eHUB, you must be a customer of Exertis UK.\n\nIf you are not a customer, then please use the [contact us ](https://ehub.exertis.co.uk/contact/) page to request an account.\n\n**Please Note**: it can take several days to create your account, depending on the checks required\n\n# Registration\n\nOnce you have an Exeris UK account, you can then register for eHUB access via the registration page [register here](https://ehub.exertis.co.uk/register/)\n\nRegistration requires you to identify your SAP Account Number & Account Manager in order for us to configure your access correctly.\n\nWe also need you to identify the APIs that you want to consume.  \nFor customers only requiring price and availability, please only select the P&A API, as this will speed up your onboarding time\n\nFor customers only requiring B&H, please only select the B&H API, as this will speed up your onboarding time\n\nFor customers wanting to place orders via API, please select P&A / orders / status APIs.  \nOnce you have submitted your request, you will receive confirmation that it has been sent.  \nPlease allow 3-5 days for the account to be setup (depending on which APIs you’ve specified)\n\nInitially you will be setup with a **TEST** account. Once setup is complete, you will be notified by email, containing instructions on how to proceed\n\n# API Consumption\n\nBefore you can consume the APIs, you will need to obtain your Identity token, which is then used to create a bearer token - passed in via the header of every API call.\n\nThe bearer token is used to authenticate your access and needs to be renewed every15 minutes.\n\nTo obtain / renew your identity token, you must log into the [eHUB Portal ](https://ehub.exertis.co.uk/) as an account manager, then follow the instructions to create / renew your Identity token.\n\nonce you have your Identity token, you can then generate your short-lived bearer token, to be used to access Order and Product APIs\n\n# Testing\n\nPart of the setup process is to create a small subset of products within your test account.\n\nWhen placing orders, you will be expected to have fetched your [product catalogue](https://apidocs.ehub.exertis.io/#e4567093-e945-48cb-abfd-b7a5291cf71f) (which provides you with SKU codes, stock levels and pricing) and use this information to place orders.\n\nWe suggest placing several orders, a couple that test the success path, plus a couple of orders that test the failure paths.\n\nWhen an order fails, you will be returned a 40x response, with an overview of the issue. You will be expected to handle these issue's, fix and then resubmit.\n\n\\*_Exertis will not hold / process any failed orders.__\\*_\n\nSuccessful orders will be received into the PENDING|SENT status. at this point, you will need to contact support and ask them to move the orders on - so that you can then start testing the Status endpoints.\n\nOnce you have completed a number of tests, we can then proceed to putting your account live\n\n# Go Live Process\n\nOnce testing has been successfully completed, you will need to ask support to create a production account. this account is separate from your test account and will use a different Identity token.\n\nAgain, it may take a couple of days to setup your account, depending on your pricing structure.\n\nOnce setup, and orders sent to this account will be fulfilled, and would be difficult to intercept\n\n# Error Handling\n\nFrom time to time, you may have to deal with errors, when making requests on the Exertis API.  \nThese can be categories as follows:\n\n- Content error – Invalid content in the API request.\n    \n- Network error – Intermittent communication problems between client and server.\n    \n- Server error – A problem on the Exertis servers.\n    \n\nYou should be expected to handle errors and ideally have a retry process in-place.\n\n# Error codes\n\nExertis uses HTTP response status codes to indicate the success or failure of your API requests.  \nIf your request fails, Exertis returns an error using the appropriate status code.\n\nIn general, there are three status code ranges you can expect:\n\n- 2xx success status codes confirm that your request worked as expected\n    \n- 4xx error status codes indicate an error because of the information provided.\n    \n- 5xx error status codes indicate an error with Exertis’ servers\n    \n\nif this does not help resolve the issue, then please [contact us](https://ehub.exertis.co.uk/contact/)\n\n# Paginating our APIs\n\nAll of our API's that return multiple records will require paginating through.\n\nYou can expect to find these in the \"links\" section in the response. Unless otherwise defined against an API, expected values can be.\n\n| parameter | example | description |\n| --- | --- | --- |\n| self |  | Current URL being used |\n| first | page\\[size\\]=20 | First page of results |\n| last | page\\[size\\]=20&page\\[last\\]=1 | Last page of results |\n| prev | page\\[size\\]=20&page\\[prev\\]=6683e8a440e9ebabea2a2349-0 | Previous page of records |\n| next | page\\[size\\]=20&page\\[after\\]=6683e8a540e9ebabea2a235c-0 | Next page of records |","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"1120620","team":24156,"collectionId":"6f4ff79f-bf37-40b5-87e0-c29d8aba988f","publishedId":"2s93Y5Q138","public":true,"publicUrl":"https://apidocs.ehub.exertis.io","privateUrl":"https://go.postman.co/documentation/1120620-6f4ff79f-bf37-40b5-87e0-c29d8aba988f","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"light","themes":[{"name":"dark","logo":null,"colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"FF6C37"}},{"name":"light","logo":null,"colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"}}]}},"version":"8.11.4","publishDate":"2024-12-18T12:37:58.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":null,"logoDark":null}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/b2db32e30b8e7ff999e348a9aeddcc3a8e1fba388f4ff1f6d8e7846d4acf5c39","favicon":"https://res.cloudinary.com/postman/image/upload/v1645009131/team/adi2da5ffmf507j0xbhj.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://apidocs.ehub.exertis.io/view/metadata/2s93Y5Q138"}