{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"60bcc004-ce2f-4b03-aef7-6e655a47419d","name":"Abzorb API Documentation - v1.1","description":"<img src=\"https://content.pstmn.io/35c88a62-ea74-447b-8801-7b67fb713ee2/QXBpIGJhbm5lciB4Mi5qcGc=\">\n\n## I**ntroduction**\n\nWelcome to the Abzorb API documentation, developed to support seamless third-party integration with Abzorb Technology’s CRM/ERP platform. This API offers a broad suite of capabilities, including customer management, connection oversight, mobile order processing, ticket handling, and real-time data usage monitoring for active connections. It provides a robust and flexible interface, enabling developers to integrate their systems efficiently with the services offered by Abzorb Technology.\n\nThe Abzorb API is built on RESTful principles, utilising predictable, resource-oriented URLs. It delivers JSON-formatted responses and adheres to standard HTTP status codes and authentication mechanisms, ensuring consistency and ease of use for developers.\n\n## Endpoint Details\n\nPlease see a list of deployments alongside the base API URL for each deployment below.\n\n| Description | Base URL |\n| --- | --- |\n| Production API | [https://abzorbapi.click2sign.co.uk:8077/api/](https://abzorbportal.click2sign.co.uk:8077/api/) |\n| Staging API | [https://abzorbapi.click2sign.co.uk:8076/api/](https://abzorbportal.click2sign.co.uk:8076/api/) |\n\n## **Authentication**\n\nThe Abzorb Technology API now uses **OAuth 2.0 (Client Credentials flow)** for authentication. Each registered API user is issued a unique `client_id` and `client_secret`.\n\n## Obtaining an Access Token\n\nTo interact with the Abzorb Technology API, you must first obtain an OAuth 2.0 access token using the **Client Credentials Grant**.\n\n### Endpoint\n\n```\nPOST https://{environment}/token\n\n ```\n\n### Request\n\nThe request **must use HTTP Basic Authentication** with your client credentials:\n\n- **Username:** `YOUR_CLIENT_ID`\n    \n- **Password:** `YOUR_CLIENT_SECRET`\n    \n\nIn addition, the body of the request must include `grant_type=client_credentials` as `application/x-www-form-urlencoded`:\n\n```\nPOST /token HTTP/1.1\nHost: stagingapi.click2sign.co.uk\nAuthorization: Basic BASE64_ENCODED_CLIENT_ID_AND_SECRET\nContent-Type: application/x-www-form-urlencoded\ngrant_type=client_credentials\n\n ```\n\n**Note:** Encode your client ID and secret as Base64 (`client_id:client_secret`) for the `Authorization: Basic` header.\n\n**Successful Response:**\n\n``` json\n{\n  \"access_token\": \"eyJhbGciOiJIUzI1NiIsInR...\",\n  \"token_type\": \"bearer\",\n  \"expires_in\": 3600\n}\n\n ```\n\n- `access_token` – a JWT that must be included in all subsequent API requests.\n    \n- `token_type` – always `bearer`.\n    \n- `expires_in` – lifetime of the token in seconds (e.g., 3600 = 1 hour).\n    \n\nWhen the token expires, request a new one using the same client credentials.\n\n### Using the Access Token\n\nInclude the token in the `Authorization` header when making API requests:\n\n```\nGET /api/Connections/ HTTP/1.1\nHost: stagingapi.click2sign.co.uk\nAuthorization: Bearer eyJhbGciOiJIUzI1NiIsInR...\n\n ```\n\n### Requirements\n\n- All requests must be authenticated with a valid **OAuth 2.0 access token**.\n    \n- Only HTTPS-secured communications are supported. Any attempt to access API resources over HTTP will result in an HTTP 301 redirect.\n    \n- Responses are returned in JSON format.\n    \n\n## Errors\n\nThe Abzorb Technology API uses standard HTTP response codes to indicate the result of API requests. These codes typically follow the conventions below:\n\n- **2xx** codes indicate successful operations.\n    \n- **4xx** codes denote client-side errors, such as missing parameters or malformed requests.\n    \n- **5xx** codes reflect server-side errors, representing issues within Abzorb Technology's infrastructure—these occurrences are rare.\n    \n\n| **HTTP Stauts Code** | **Status Code Name** | **Description** |\n| --- | --- | --- |\n| **200** | OK | The request was successful and everything worked as expected. |\n| **400** | Bad Request | The request could not be processed due to missing or incorrect parameters. |\n| **401** | Unauthorized | Access to the resource is denied due to missing or invalid API credentials. |\n| **402** | Request Failed | The request was valid but failed to be processed successfully. |\n| **403** | Forbidden | The request is forbidden due to lack of permissions with the provided API credentials. |\n| **404** | Not Found | The requested resource does not exist on the server. |\n| **409** | Conflict | The request conflicts with another request or resource state. |\n| **429** | Too Many Requests | The API rate limit has been exceeded. Implement an exponential backoff strategy for future requests. |\n| **500, 502, 503, 504** | Server Errors | An unexpected server error occurred on our side. These occurrences are rare. |\n\nWithin an API call, if the request is successfully but fails validation, a validation message will return as per the below example:\n\n``` json\n{    \n  \"response_message\": \"error_message\"\n}\n\n ```\n\n### Authentication Error Responses\n\nIf the OAuth 2.0 flow fails, the API will return an error response in JSON format.\n\n**Invalid or missing client credentials (at token request):**\n\n``` json\n{\n  \"error\": \"invalid_client\",\n  \"error_description\": \"The client_id or client_secret is invalid.\"\n}\n\n ```\n\n**Invalid or expired access token (at API request):**\n\n``` json\n{\n  \"error\": \"invalid_token\",\n  \"error_description\": \"The access token is invalid or has expired.\"\n}\n\n ```\n\n**Insufficient scope (token does not grant access to the requested resource):**\n\n``` json\n{\n  \"error\": \"insufficient_scope\",\n  \"error_description\": \"The access token does not grant the required permissions.\"\n}\n\n ```\n\n## Parameter Usage\n\nCertain methods require a `contractId`instead of a `cli`. A `contractId`serves as a unique identifier for a `cli`. To obtain a CLI’s `contractId`, view the `cli`at `/api/Connections/?cli=XX`, etc. A ContractID may also be referred to as a ConnectionID—they are synonymous. In addition, `companyId` may also be referred to as `customerId`.\n\nSome method types necessitate parameters that cannot be supplied directly. These parameters, such as DiaryTypeID, DiaryTaskID, BarSuffix, and StatusID, are provided within seperate API calls within their appropriate controllers.\n\nAdditional information you may need to input can be accessed by querying CLIs using existing information. For instance, a `customerId` is associated with a CLI upon viewing it. This `customerId` is the unique identifier of the customer who owns that connection within our system. It is typically required for creating tasks to ensure they are correctly associated with the customer’s account and portal.\n\n### 503 response\n\nAn HTTP `503` response from our servers indicates there is an unexpected spike in API access traffic. The server is usually operational within the next five minutes. If the outage persists or you receive any other form of an HTTP `5XX` error, please contact Portal Support.\n\n### **Version Control**\n\n| **Version** | **Date** | **Editor** | **Description** |\n| --- | --- | --- | --- |\n| 1.0 | 14/06/2025 | Awais Hussain | Core functionality added which is listed below:  <br>  <br>\\- Bars Management  <br>\\- Bundles Management  <br>\\- CLI Management  <br>\\- Customer Management  <br>\\- Diverts  <br>\\- Orders  <br>\\- PACs Controller  <br>\\- SIM Management  <br>\\- Tariff Management  <br>\\- Tasks  <br>\\- Usage |\n| 1.1 | 02/09/2025 | Awais Hussain | Built OAuth 2.0 authentication into API workflow and updated documentation. |\n\n### **Need some help?**\n\nIn case you have questions or require assistance, please contact your Account Manager who will be able to forward your query to the API development team.","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"49139871","team":10727615,"collectionId":"60bcc004-ce2f-4b03-aef7-6e655a47419d","publishedId":"2sB3QMMpdt","public":true,"publicUrl":"https://apidocs.click2sign.co.uk","privateUrl":"https://go.postman.co/documentation/49139871-60bcc004-ce2f-4b03-aef7-6e655a47419d","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.10.1","publishDate":"2025-10-14T11:01:23.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/19b0f659f66cae52c65e58848dc9f202d34f11f2b1238dfb144808199758b669","favicon":"https://click2sign.co.uk/favicon.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.click2sign.co.uk/view/metadata/2sB3QMMpdt"}