{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"c25df722-32b0-471f-aa12-a01f0a8b998d","name":"Accutics Open API - Documentation","description":"# Basics\n\nThe section will give an introduction to the overall structure of the API. The API uses a REST-like structure, while not adhering strictly to the standard, it uses HTTP verbs, status codes and URL paths in a way that should be familiar to those familiar with REST.\n\nThe API is JSON based, and JSON is used in request bodies and responses. The responses format is described in greater details below.\n\n## Authentication\n\nAll requests made to the Accutics open API, must be authenticated using a JWT based bearer token set in the `Authorization` header. The token must belong to an API user profile. Contact support to create an API user and to get instructions on how to acquire the access token corresponding to that user.\n\nThe permissions granted when using the token are controlled by the project and accounts the API user is added to and the roles given to it. This is managed in the Accutics Platform.\n\n## Response format\n\nAll successful responses follow a common format, which will be described here. Successful requests will have a `2xx` HTTP status code. See details about the response contents and status codes for specific requests in the appropriate sections of the this documentation.\n\nAll responses are JSON formatted and consist of two top-level attributes as shown in the example below:\n\n``` json\n{\n  \"data\": [...],\n  \"meta\": {...}\n}\n\n ```\n\nThe `data` property contains the requested data. For responses containing multiple entities the contents of the property will be an array of objects, i.e. when listing entities in \"index\" requests. Note that an index request which only contains one entity will still result in an array with a single entry. For requests that inherently returns a single entity, such as a \"show\" or \"create\" requests, the `data` attribute will contain an object.\n\nThe `meta` attribute contains meta data about the response, such as paging information. The exact content depends on the given request, however it always contains the `endpoint` property, which contains the name of the endpoint used.\n\n## Error responses\n\nError responses follow a similar format to succesful responses. The `meta` property is also present here, while the `data` property is replaced by the `error` property.\n\nThe `error` property contains `code` (string) which can be used in conjunction with the HTTP status code, to determine the type of error. A list of general error codes is given below - error codes specific to individual requests are described in their respective sections.\n\nThe `message` property contains a human-readable description of the error that occurred.\n\n> Note that the message should not be used to programatically determine the nature of an error. The messages are subject to change between API versions or even within the same version - use the HTTP status code and `code` property instead. \n  \n\nThe `data` property contains a JSON object with data, which can be used to further investigate the cause of the error. The contents of the object varies between different requests and error codes.\n\n``` json\n{\n    \"error\": {\n        \"code\": \"...\",\n        \"message\": \"...\",\n        \"data\": {...}\n    },\n    \"meta\": {\n        \"endpoint\": \"...\"\n    }\n}\n\n ```\n\n### General errors\n\nThe table below documents general error responses that are not specific to certain requests.\n\n| Status code | **Error code** | **Description** |\n| --- | --- | --- |\n| 400 | `invalid_route` | Occurs if a request is made with a URL path that does not match any endpoint in the open API or an incorrect HTTP method is used. |\n| 401 | `authorization_header_missing` | Occurs if the `Authorization` header is not set in the request or it's empty. |\n| 403 | `authorization` | The API user doesn't have the required permission to access the requested resource. |\n\n## Request options\n\nThis section describes common options that can be used across various requests. Not all requests support all the options. See the documentation of individual endpoints to see which ones are supported.\n\n### Paging\n\nFor requests that list entities, paging can be used to request data page by page. There are two different method of pagination used on different endpoints - page number and cursor. See the documentation for individual endpoints for more information about which type is support for respecitve endpoints. The two pagination method are explained below.\n\n#### Page number\n\nThe page number method uses a page size and page number. To get the next page of entities, the page number is increased. The following query string parameter are supported:\n\n| **Parameter** | **Description** | **Example** |\n| --- | --- | --- |\n| `page_size` | The maximum number of entities returned in the response. Various requests will have different max page sizes. If a page size greater than the maximum is requested, the page size is limited to the maximum page size. | 50 |\n| `page` | The page number to return in the response. To get the first page the parameter can be omitted or set to 1. | 2 |\n\nRequests supporting this pagination method will have the `pagination` property in the `meta` property of the response. It contains the following information.\n\n| **Property** | **Description** | **Example** |\n| --- | --- | --- |\n| `first` | The URL to the first page. |  |\n| `previous` | The URL to the previous page, if one exists. |  |\n| `current` | The URL to the current page. |  |\n| `next` | The URL to the next page of data, if more pages exist. |  |\n| `last` | The URL to the last page of entities. |  |\n| `items_per_page` | The number of entities per page. | 100 |\n| `total_items` | The total number of entities. | 245 |\n| `page_param` | The name of the parameter used to specify the requested page (static value). | \"page\" |\n| `size_param` | The name of the parameter used to specify the page size (static value). | \"page_size\" |\n\nThe property contains an object defined by the following JSON Schema.\n\n``` json\n{\n    \"type\": \"object\",\n    \"properties\": {\n        \"first\": {\"type\": \"string\"},\n        \"previous\": {\"type\": [\"string\", \"null\"]},\n        \"current\": {\"type\": \"string\"},\n        \"next\": {\"type\": [\"string\", \"null\"]},\n        \"last\": {\"type\": \"string\"},\n        \"items_per_page\": {\"type\": \"integer\"},\n        \"total_items\": {\"type\": \"integer\"},\n        \"page_param\": {\"type\": \"string\"},\n        \"size_param\": {\"type\": \"string\"}\n    }\n}\n\n ```\n\n#### Cursor\n\nThe cursor method uses a page size and cursor. To get the next page of entities, the `next_cursor` value from the previous response must be set as the `cursor` parameter. To get the first page of entities the cursor parameter should not be set in the request.\n\n| **Parameter** | **Description** | **Example** |\n| --- | --- | --- |\n| `page_size` | The maximum number of entities returned in the response. Various requests will have different max page sizes. If a page size greater than the maximum is requested, the page size is limited to the maximum page size. | 50 |\n| `cursor` | The cursor value after which the entities in the response will start. | 342 |\n\nRequests supporting this pagination method will have the `pagination` property in the `meta` property of the response. It contains the following information.\n\n| **Property** | **Description** | **Example** |\n| --- | --- | --- |\n| `next_cursor` | The cursor value for the next page. When there are no more pages this property will contain the value `null`. | 255 |\n| `next` | The URL to the next page of data, if more pages exist. |  |\n| `items_per_page` | The number of entities per page. | 100 |\n| `current` | The current URL. |  |\n| `size_param` | The name of the page size parameter. | \"page_size\" |\n| `cursor_param` | The name of the cursor parameter. | \"cursor\" |\n\nThe property contains an object defined by the following JSON Schema.\n\n``` json\n{\n    \"type\": \"object\",\n    \"properties\": {\n        \"current\": {\"type\": \"string\"},\n        \"next\": {\"type\": [\"string\", \"null\"]},\n        \"items_per_page\": {\"type\": \"integer\"},\n        \"next_cursor\": {\"type\": \"string\", \"null\"},\n        \"cursor_param\": {\"type\": \"string\"},\n        \"size_param\": {\"type\": \"string\"}\n    }\n}\n\n ```\n\n### Sorting\n\nFor some requests that list entities, sorting can be applied using the `sort` parameter. The dimensions available for sorting is specified in the documentation of individual endpoints. See the example below:\n\n`sort=sort_id`\n\nIt's possible to sort in ascending or descending order. By default, sorting is in ascending order, but can be reversed by adding the prefix `-`. See example below:\n\n`sort=-sort_id`\n\nSome endpoints support soring by multiple dimensions in the given order. To do so, separate the dimensions by comma.\n\n### Searching/filtering\n\nFor some requests that list entities, it's possible to filter apply filters to requests using the `search` parameter. The dimensions available for sorting is specified in the documentation of individual endpoints. See the example below:\n\n`search=record_id:eq:e1eec316-d74a-3755-88fa-046e1b50aee1`\n\nThe filters follow the format `[dimension]:[operator]:[value]`. Multiple filters can be added, by separating them by semicolon. When multiple dimensions are added this way, all the filters must match.\n\nThe operators available depend on the dimension - see documentation of individual endpoints for details about which operators are available for differnt dimentions. Some operators support multiple values separated by comma. When multiple dimensions are added this way, any the values must match.\n\n| Operator | Aliases | What it does | Example | Special rules |\n| --- | --- | --- | --- | --- |\n| **equal** | `eq`, `equals`, `=` | Exact match | `search=id:eq:550e8400-e29b-41d4-a716-446655440000` | **Multiple comma-separated values = OR** (`WHERE IN`). Works on `id`, text fields, selects, outputs, user IDs, etc. |\n| **notequal** | `neq`, `notequals`, `!=` | Excludes exact match(es) | `search=input_medium:neq:paid_search` | With **multiple values**, excludes records matching **any** of them. On inputs/outputs, often implemented as “not in subquery” |\n| **gt** | `>` | Greater than | `search=created_at:gt:2024-01-01T00:00:00Z` | Timestamps must be **ISO 8601 Zulu** (`...Z`). Sub-second fraction is stripped |\n| **gte** | `>=` | Greater than or equal | `search=created_at:gte:2024-01-01T00:00:00Z;created_at:lt:2024-02-01T00:00:00Z` | Same timestamp rules as `gt` |\n| **lt** | `<` | Less than | `search=input_start_date:lt:2024-06-01T00:00:00Z` | Date **input** fields use this operator set |\n| **lte** | `<=` | Less than or equal | `search=created_at:lte:2024-12-31T23:59:59Z` | Same timestamp rules |\n| **contains** | — | Substring match (SQL `LIKE %value%`) | `search=output_utm_campaign:contains:alpha` | `%` and `_` in the value are escaped. **Multiple values = OR**. Used for `submission` (on name), `author`/`updater` (via Hub name/email search) |\n| **beginswith** | `startswith` | Prefix match (`value%`) | `search=submission:beginswith:Q1` | Wildcards escaped. **Multiple values = OR** |\n| **endswith** | — | Suffix match (`%value`) | `search=submission:endswith:2024` | Wildcards escaped. **Multiple values = OR** |\n| **exists** | — | Field has a non-null / populated value | `search=input_segment:exists` | **No value** after the operator (`field:exists`). Supplying a value is invalid |\n| **missing** | — | Field is null / empty / absent | `search=input_segment:missing` | **No value** (`field:missing`). For inputs, “missing” means no value stored for that field |\n| **hasany** | `has_any` | Record has **at least one** of the listed values | `search=input_tags:hasany:foo,bar` | For **multi-select**: any listed dataset key matches. For **single-select**: same machinery (OR of keys). **`match_status`**: record status is in the list (with special handling for `outdated` / `synced`) |\n| **hasall** | `has_all` | Record has **all** listed values | `search=input_tags:hasall:foo,bar` | **Multi-select only**. Requires every key to be present on the record |\n| **hasnone** | `has_none` | Record has **none** of the listed values | `search=match_status:hasnone:unmatched,out_of_sync` | Excludes records matching any listed value. **`match_status`**: excludes those statuses (with `outdated`/`synced` semantics) |","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"4709959","team":115917,"collectionId":"c25df722-32b0-471f-aa12-a01f0a8b998d","publishedId":"2sAYHwHPgh","public":true,"publicUrl":"https://docs.api.accutics.com","privateUrl":"https://go.postman.co/documentation/4709959-c25df722-32b0-471f-aa12-a01f0a8b998d","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"system_default","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.6","publishDate":"2025-02-27T09:46: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/e16c70aabe9200e9f709e5a5859231b00ee143b570c44d1d32c2eaa51d6c4461","favicon":"https://accutics.com/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://docs.api.accutics.com/view/metadata/2sAYHwHPgh"}