{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"51a602d1-ce55-403e-9f53-25eeeddd6dbe","name":"API Reference (OUTDATED) -> https://docs.propeller-commerce.com","description":"**Documentation moved to** [<b>docs.propeller-commerce.com</b>](https://docs.propeller-commerce.com)\n\n> This documentation is OUTDATED and will be removed shortly, please go to our new documentation site at [https://docs.propeller-commerce.com](https://docs.propeller-commerce.com) \n  \n\nThe Propeller REST API is based on resource-oriented URL's, returns JSON-encoded responses and uses standard HTTP response codes, authentication and HTTP methods. The main goal of the REST API is efficiently importing/exporting large amounts of data in/out of the Propeller platform.\n\n# HTTP methods\n\nPropeller REST API supports POST, GET, PATCH, and DELETE HTTP methods.\n\n# Authentication\n\nThe REST API uses the [oAuth 2.0 client credentials grant type](https://oauth.net/2/grant-types/client-credentials/) for authentication, every API requests needs a valid access token.\n\n## Request an access token\n\n1. Request an access token by executing [a POST request](#6875f451-f0ef-4bbf-9789-c774e7837375) to the [token endpoint](https://api.helice.cloud/oauth2/token). This POST request should include the Client id and Client secret.\n    \n2. A successful access token request will return the following result:\n    \n\n``` json\n{\n  \"refresh_token_expires_in\": \"0\",\n  \"api_product_list\": \"[Propeller REST APIs]\",\n  \"api_product_list_json\": [\n    \"Propeller REST APIs\"\n  ],\n  \"organization_name\": \"propeller-platform-prod\",\n  \"developer.email\": \"developer@propel.us\",\n  \"token_type\": \"BearerToken\",\n  \"issued_at\": \"1646873717224\",\n  \"client_id\": \"veNqlG9u5JAce1AccAnuiqxFL1NvVMHS0H8Qu8omHBW7ykjT\",\n  \"access_token\": \"ARAo4GjuI1bGSyenSKx5oYfFGuFQ\",\n  \"application_name\": \"a1ca275a-2abb-4bd3-82b0-3ae699d75e40\",\n  \"scope\": \"\",\n  \"expires_in\": \"1899\",\n  \"refresh_count\": \"0\",\n  \"status\": \"approved\"\n}\n\n ```\n\n3\\. Parse the `access_token` value from this result and use it as a [bearer token](https://oauth.net/2/bearer-tokens/) in subsequent API requests.\n\n4\\. After 30 minutes the requested `access_token` expires and a new token needs to be requested.\n\n# Lookup keys\n\nThe REST API offers multiple ways to identify resources. In Propeller terminology these are called lookup keys. For example: a product can be identified by its Propellor internal `id`but also by an `sku.` A `sku` however, is not guaranteed to be unique in the catalogue, as multiple `products` with the same `sku` can exist. If multiple resources are found based on the lookup key / value combination the result of the request will be an error. In case of multiple `products` with the same `sku` a GET or PATCH request to this product will result in an error.\n\n| **Lookup Key** | **Explanation** |\n| --- | --- |\n| id | Unique Propeller id of an object |\n| externalId | Unique external id |\n| sourceId/ source | External system unique id to a Propeller resource. `sourceId` always needs to be combined with a `source`. Source is typically the name of a supplier or ERP system the data originates from. |\n| sku | Stock-keeping unit code referencing a product |\n| supplierCode / supplier | Code of a supplier referencing a product |\n| code | Code referencing any other resource (e.g. a pricesheet) |\n\nSource ID/ Source lookup key is most commonly used in [Bulk endpoints](#bulk-endpoints). If you're creating/ updating products from an external system, the name of that system would typically be the `source` and `sourceId` would be the product's id or code in that system. This id should be unique in that system and the combination source/sourceId is unique in Propeller. When using the GET, DELETE, UPDATE endpoints with lookup key `sourceId` you can use it without `source`, but if multiple resources are found you will get an error. In that case use `source` as well.\n\nSupplier code / supplier is another common way of looking up products. The difference between the sourceId is that the combination does not have to be unique. When it's not and you try to use the GET, UPDATE, DELETE endpoints you will get an error that multiple resources have been found.\n\n# Expanding resources\n\nSome resources allow to request additional information as an expanded resource by using the `expands` request parameter. This parameter is available on all GET REST API requests and applies to the response of that request only.\n\nIn many cases, an object contains a related object in its response properties. For example, an `Orderitem` may have an associated `Product` id. Those objects can be expanded inline with the `expands` request parameter.\n\n| **Expand parameter** |  |\n| --- | --- |\n| orderItems | expands the `order` resource with `orderItems` |\n| orderItems.product | expands the `orderItems` resource with the `product` resource |\n| translation | expands translated fields for all available languages. |\n| inventoryBalance | expands all inventory resources for a `product` |\n| defaultProduct | expand the `cluster` or `option` resuorce with the default `product` resource |\n\n# Pagination\n\nQuerying resources and especially retrieving a lot of data can be potentially really expensive. Therefor, endpoints that retrieve a lot of results are paginated. Use `page` and `offset` query parameters to request a certain page of the result in GET endpoints. When using search endpoints (POST HTTP method), `page` and `offset` are part of the payload.\n\n### Page\n\nYou can request a certain page of the result using the `page` query/ payload parameter.\n\n### Offset\n\nYou can set the maximum number of results to return using the `offset` query/ payload parameter. The minimum value is `1` and the maximum can differ per API. This is specified in more details in endpoints that support pagination. The default `offset` on most endpoints is `12`.\n\n### Response\n\nThis response retrieves 2 results in the data, the number of results per page is 2 and page requested is 1. `total` is the number of records for the page requested, while `itemsFound` is the total number of results.\n\n``` json\n{\n  \"data\": [\n    {\n      id: 56897\n    },\n    {\n      id: 36975\n    }\n  ],\n  \"messages\": [\n    \"Completed\"\n  ],\n  \"start\": 1,\n  \"pages\": 20,\n  \"total\": 2,\n  \"offset\": 2,\n  \"itemsFound\": 35,\n  \"end\": 2,\n  \"page\": 1\n}\n\n ```\n\n# Errors\n\nThis section describes error codes used in the Propeller platform REST APIs and their meaning. For details about the API-specific error-codes, consult the documentation dedicated to that API.\n\n| **Code** | **Error Type** | **Status Code** | **Message** | **Reason** |\n| --- | --- | --- | --- | --- |\n| 10005 | InvalidJSONPayload | 400 | Invalid JSON Payload | JSON provided in payload is not valid |\n| 10006 | InvalidLookupKey | 400 | Invalid lookup key | Lookup key is not supported in the specific API. Check API specific lookup keys |\n| 10007 | SchemaValidationException | 400 | Schema Validation Error | JSON schema validation. Response contains the details of the issue |\n| 10008 | NotFound | 404 | Resource not found | Resource deleted, non-existing or insufficient permissions |\n| 10015 | PaginatedResponseException | 400 | Pagination not properly initialized | `offset` or `page` are not initialized properly. These should be positive integers. Possible maximum limit exceeded on `offset` |\n| 10016 | LookupKeyNotFound | 400 | Lookup key not found in payload | Bulk endpoints by a certain lookup key require that the lookup key is provided in the payload |\n| 10017 | PayloadValidationError | 400 | Payload validation error | Server side validation of the payload. Response contains the details of the issue |\n| 10018 | TranslationNotFound | 404 | Translation not found | Resource deleted, non-existing or insufficient permissions |\n| 10019 | WarehouseNotFound | 404 | Warehouse not found | Resource deleted, non-existing or insufficient permissions |\n| 10020 | WarehouseInvalidConfiguration | 400 | Warehouse invalid configuration | Warehouse not properly configured, e.g. not a pick up location |\n\n### Error response\n\nWhen an API call results in an error, the response contains the `error` property which is an object with the following properties:\n\n| **Property** | **Type** | **Description** |\n| --- | --- | --- |\n| code | string | Error code. Generic error codes are listed [here](#errors), while API specific error codes are listed in each API |\n| status | integer | Status code |\n| type | string | Error type. Generic error types are listed [here](#errors), while API specific error types are listed in each API |\n| messages | array\\[string\\] | An array of error messages |\n| moreInfo | string | URL to a page containing details about the error (under construction) |\n\nExample error response:\n\n``` json\n{\n  \"error\": {\n    \"code\": 80006,\n    \"status\": 404,\n    \"type\": \"ProductNotFound\",\n    \"messages\": [\n      \"Product with id [481189] not found\"\n    ],\n    \"moreInfo\": \"https://www.propel.us/docs/errors/80006\"\n  }\n}\n\n ```\n\n# Localized String\n\nA localized string is a JSON object used for fields that are translatable. A localized string has two properties: to indicate the language as per [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) and the value of the translated field in that language.\n\n``` json\n{\n    \"language\": \"EN\",\n    \"value\": \"\"\n}\n\n ```\n\n# Bulk endpoints\n\nBulk endpoints allow for an efficient way of importing/updating large amounts of data with just a single API call. Traditional REST API functionality would allow for a single resource (e.g. a `product` or `user`) to be created and a second API request to update this resource. Creating and/or updating multiple resources would mean executing multiple API requests. Working with larger number of resources means this approach would generate a significant number of API calls resulting in inefficient use of resources and import processes taking a lot of time.\n\nThe Propeller REST API offers \"bulk\" functionality to efficiently import/update resources. A bulk request typically contains a payload of multiple resources of a single type (e.g. [product](#a78a829a-3bd3-4a19-94c8-0b0d2aa52a43), [user](#6bc5a5dc-654b-49c0-becd-2470180fe8d9), [category](#49dee3e7-7cdd-4ab1-afc8-d752e8fdfdc2) or [inventory](#6a8a11c0-5dc5-4c1b-bd03-876049d22cc0)). Based on the [lookupKey](#lookup-keys) Propeller will decide if a resource needs to be created or updated.\n\nBulk endpoints take away the need for multiple API calls to determine if a resource needs to be created or updated and allow for creating/updating multiple resources in on API request.\n\n# Directives\n\nDirectives are a powerful Propeller REST APIs concept only used in bulk endpoints. Use direcitves for actions that are otherwise only doable via a lot of single endpoint API requests. Directives concept is easiest to understand via use cases.\n\n- Let's assume a large number of products is being created/ updated using the Product Bulk endpoint and Propeller's back office is used to maintain some of the data, e.g. product names. When products are created via the bulk endpoint they should not be created with an empty product name. That name can later be changed and we don't want to overwrite it. If it were a single resource endpoint, the GET endpoint could be used to check if the product exists, find the name, compare it, etc. That is not really efficient on a large scale. This is where `skipIfNotEmpty` directive comes handy. Use this directive when you only want to set a field with the value from the payload if it's current value is an empty string.\n    \n- Another use case is using Propeller to move resources in a different parent container that the one they were originally created in. Let's assume you have a list of products that belong in certain categories and those products are created via the Bulk endpoints. If you decide to maintain the catalogue structure from within Propeller you would typically move products around manually or via Propeller's rule engine. To avoid a Bulk endpoint would move them back to their original endpoint, use the `skipMoveOnUpdate` directive.\n    \n- When creating categories/ product translations you typically have a list of all the active translations you want the resource to be translated in. When using a single resource endpoint you can delete translations one by one, but in the Bulk endpoints use `mergeTranslationsOnUpdate` to reset i.e. delete the ones that are not in the payload.\n    \n\n| Name | Description | **Fields** |\n| --- | --- | --- |\n| skipIfNotEmpty | On update, skip updating fields of an existing resource that are not empty | array of field names, API specific  <br>e.g. for `products` : `names`, `descriptions`, etc. |\n| skipMoveOnUpdate | On update, skip moving an existing resource in the parent resource provided | empty array |\n| mergeTranslationsOnUpdate | On update, delete all translation for a resource that are not provided in the payload | empty array |\n| skipCreate | Skip creating new, only update existing resources | empty array |\n\n# Usecases\n\n## Usergroups - users bulk import\n\nThe user rest api is typically used in a B2B environment where a predefined set of customers is allowed access to a webshop / portal. Typically those customers are managed in an ERP and/or CRM system and in order for these customers to have access to the webshop, they need to have an account in Propeller meaning these customers need to be imported into Propeller.\n\nA common way for an ERP/CRM system to handle the concept of customers is to have an entity called customer/debtor or relation and within this entity there are one or multiple contacts. The customer/debtor in this case is a company/organization and has a unique `debtorId` . The contacts are typically persons within the organization with each their own e-mail address/telephone number and multiple different invoice, delivery and visiting addresses.\n\nA typical way to get the ERP / CRM customers into Propeller is to create a Propeller [usergroup](#fc82c5bc-63c8-4805-8165-0ac2e99005dc) for each customer and within this `usergroup`, for each contact, a Propeller `user` .\n\nMost of the time the number of customers/contacts which need to be imported will be multiple thousands (if not more). In these cases it is important to use the user and usergroup bulk endpoints, these make sure creating/updating the usergroups / users / addresses / attributes is done in efficiently.\n\nTo create the `usergroups` and `users` in Propellor two different bulk endpoints need to be used:\n\n1. the [usergroup bulk endpoint](#38cbffb4-5e30-411b-8547-a4413033daea)\n    \n2. the [user bulk endpoint](#6bc5a5dc-654b-49c0-becd-2470180fe8d9)\n    \n\nVia the usegroup bulk endpoint multiple usergroups representing companies will be created:\n\n``` json\n{\n    \"usergroups\": [\n        {\n           \"sourceId\": \"x-123\",\n           \"source\": \"MBC\",\n           \"language\": \"EN\",\n           \"parent\": {\n                \"sourceId\": 999112000\n                \"source\": \"MBC\"\n            },\n            \"name\": \"Company X\"\n        },\n        {\n            \"sourceId\": \"y-456\",\n            \"source\": \"MBC\",\n            \"language\": \"EN\",\n            \"parent\": {\n                \"sourceId\": 999112000\n                \"source\": \"MBC\"\n            },\n            \"name\": \"Company Y\"\n         },\n        {\n            \"sourceId\": \"z-789\",\n            \"source\": \"MBC\",\n            \"language\": \"EN\",\n            \"parent\": {\n                \"sourceId\": 999112000\n                \"source\": \"MBC\"\n            },\n            \"name\": \"Company Z\"\n        }\n    ]\n}\n\n ```\n\nThe above usergroup bulk endpoint will create or update three usergroups. In this case we use the sourceId / source combination as [lookupKey / lookupValue](#lookup-keys) combination. When using the sourceId / source combination as lookup key, it's possible to identify resources in Propeller based on keys / identifiers from the ERP / CRM system. In the usergroup example, the `source` of the data is Microsoft Business Central (MBC) and the `sourceId` is a unque id / code for a certain customer / organization in Microsoft business central. The combination of the `source` and `sourceId` field will make sure there is only one resource found when referencing a usergroup based on these lookup values.\n\nIn advanced setup's its possible to import resources (e.g. customers / contacts) from multiple sources, If usergroups / users would also be imported from a second ERP / CMS system there is a change the `sourceId` would not be available anymore since it is used already by the first import. Because Propeller uses the combination of `sourceId` / `source` to uniquely identify a resource it is possible to import data from multiple different sources using the same sourceId's. A second usergroup import from e.g. Exact Globe could look like this:\n\n``` json\n{\n    \"usergroups\": [\n        {\n           \"sourceId\": \"x-123\",\n           \"source\": \"EXACTGLOBE\",\n           \"language\": \"EN\",\n           \"parent\": {\n                \"sourceId\": \"999112000\"\n                \"source\": \"EXACTGLOBE\"\n            },\n            \"name\": \"Company XX\"\n        },\n        {\n            \"sourceId\": \"y-456\",\n            \"source\": \"EXACTGLOBE\",\n            \"language\": \"EN\",\n            \"parent\": {\n                \"sourceId\": \"999112000\"\n                \"source\": \"EXACTGLOBE\"\n            },\n            \"name\": \"Company YY\"\n         },\n        {\n            \"sourceId\": \"z-789\",\n            \"source\": \"EXACTGLOBE\",\n            \"language\": \"EN\",\n            \"parent\": {\n                \"sourceId\": \"999112000\"\n                \"source\": \"EXACTGLOBE\"\n            },\n            \"name\": \"Company ZZ\"\n        }\n    ]\n}\n\n ```\n\nIn this case the sourceId's from MBC and Exact Globe are the same but because Propeller uses the additional field `source` to identify a resource it is possible to keep using the identifiers generated by the ERP / CRM.\n\nOnce the `usergroups` are created the users can be created via the [user bulk endpoint](#6bc5a5dc-654b-49c0-becd-2470180fe8d9). To make sure a `user` is created inside the correct `usergroup` within the `user` resource a parent object is added pointing to the `usergroup` using the `source` / `sourceId` of the `usergroup`\n\n``` json\n{\n    \"users\": [\n        {\n            \"source\": \"MBC\",\n            \"sourceId\": \"3002196\",\n            \"language\": \"NL\",\n            \"parent\": {\n                \"sourceId\": \"x-123\",\n                \"source\" : \"MBC\"\n            },\n            \"firstName\": \"Miles\",\n            \"middleName\": \"\",\n            \"lastName\": \"McCoy\",\n            \"debtorId\": 12345,\n            \"login\" : \"miles@xx.com\"\n            \"company\" : \"Company X\"\n            \"email\": \"miles@xx.com\",\n            \"mobile\": \"001445888\",\n            \"phone\": \"001445888\",\n            \"title\": \"Mr.\",\n            \"gender\": \"M\"\n        },\n        {\n            \"source\": \"MBC\",\n            \"sourceId\": \"3002197\",\n            \"language\": \"NL\",\n            \"parent\": {\n                \"sourceId\": \"x-123\",\n                \"source\" : \"MBC\"\n            },\n            \"firstName\": \"Bernie\",\n            \"middleName\": \"\",\n            \"lastName\": \"Sawer\",\n            \"debtorId\": 12345,\n            \"login\" : \"bernie@xx.com\"\n            \"company\": \"Company X\",\n            \"email\": \"bernie@xx.com\",\n            \"mobile\": \"001445888\",\n            \"phone\": \"001445888\",\n            \"title\": \"Mr.\",\n            \"gender\": \"M\"\n        },\n        {\n            \"source\": \"MBC\",\n            \"sourceId\": \"3002200\",\n            \"language\": \"NL\",\n            \"parent\": {\n                \"sourceId\": \"x-456\",\n                \"source\" : \"MBC\"\n            },\n            \"firstName\": \"Delia\",\n            \"middleName\": \"Ferdi\",\n            \"lastName\": \"Finney\",\n            \"debtorId\": 67890,\n            \"login\" : \"Delia@yy.com\"\n            \"company\": \"Company Y\",\n            \"email\": \"bernie@yy.com\",\n            \"mobile\": \"001445888\",\n            \"phone\": \"001445888\",\n            \"title\": \"Ms.\",\n            \"gender\": \"F\"\n        }\n    ]\n}\n\n ```\n\nA user / usergroup import is something which needs to be executed frequently since changes in the ERP / CRM should be made available in Propeller, new customers need to get access to the webshop and in certain situations access to the webshop needs to be revoked. Using the [bulk endpoints](#bulk-endpoints), the payload only needs to be defined once without any logic.\n\n## Order export\n\nOrder searching is typically used in combination with exporting orders to ERP/financial/other external systems. Within the Propeller order workflow there will be the need to export orders at a certain point. Most of the times the need to export an order is when the order transistions to a certain status (e.g. CONFRIMED). Via the order search api it is possible to retrieve a list of orders which are in status CONFIRMED and have not been exported yet (using the fields below)\n\n```\n{\n    \"status\": \"CONFIRMED\",\n    \"exported\": false    \n}\n\n ```\n\nOnce the orders have been exported it is good practice to update the order and mark it as \"exported\" field using the order update api. Searching for orders with the above payload will then only result in an list of orders without the previously exported orders.","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"17120068","collectionId":"51a602d1-ce55-403e-9f53-25eeeddd6dbe","publishedId":"UVkpPvzT","public":true,"publicUrl":"https://docs.helice.cloud","privateUrl":"https://go.postman.co/documentation/17120068-51a602d1-ce55-403e-9f53-25eeeddd6dbe","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"EF5B25"},"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":"EF5B25"}}]}},"version":"8.10.1","publishDate":"2023-05-02T13:37:29.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/768118b36f06c94b0306958b980558e6915839447e859fe16906e29d683976f0","favicon":"https://helice.cloud/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.helice.cloud/view/metadata/UVkpPvzT"}