{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"4b3b52d8-ce58-4545-8bbf-b2497b68e3a0","name":"absence.io API Documentation","description":"absence.io offers a RESTful API, with which most of the absence entites can be retrieved, created, updated or deleted.\n\nAll API urls are below the url path `https://app.absence.io/api/v2/[....]`\n\nThe absence.io API only supports the JSON format for sending and retrieving data.\n\n## HTTP-Request Header\n\nTo make a request with JSON, the appropriate HTTP headers are:\n\n```\nContent-Type: application/json\nAccept: application/json\nAuthorization: [See below for details]\n\n ```\n\n# Authentication\n\nTo use the absence.io API you will need an API Key. To generate an API Key, please go to your profile in your absence.io account and click on the Integrations link.  \nHere you can generate an API Key by clicking on the 'Generate API Key' button.\n\nThe ApiKey consits of two parts:\n\n- The Key Identifier (id) used to identify your key\n    \n- The actual key\n    \n\n## Hawk Authentication\n\nFor transmitting your ApiKey we use Hawk.\n\n`Hawk is an HTTP authentication scheme using a message authentication code (MAC) algorithm to provide partial HTTP request cryptographic verification.`\n\nSee [https://github.com/hueniverse/hawk](https://github.com/hueniverse/hawk) for more details.\n\nThe are numerous open source client implementations available on the internet:\n\n- Javascript/Node.js: [https://github.com/hueniverse/hawk](https://github.com/hueniverse/hawk) for more details\n    \n- C#: [https://github.com/pcibraro/hawknet](https://github.com/pcibraro/hawknet)\n    \n- Java: [https://github.com/wealdtech/hawk](https://github.com/wealdtech/hawk)\n    \n- Objective C: [https://github.com/tent/hawk-objc](https://github.com/tent/hawk-objc)\n    \n- Ruby: [https://github.com/tent/hawk-ruby](https://github.com/tent/hawk-ruby)\n    \n- PHP: [https://github.com/dflydev/dflydev-hawk](https://github.com/dflydev/dflydev-hawk)\n    \n\n### Sending your ApiKey\n\nA Hawk client requires you passing three parameters to its client/header method/function.\n\nThis will usually look something like this:\n\n```\n  var credentials = {\n    id: '53ec476edf869a0200707ac3', // the key identifier\n    key: 'werxhqb18rpaxn39848xrunpaw3489ruxnpa98w4rxn', // the actual key\n    algorithm: 'sha256' // the algorythm used to build the request header\n  };\n  var header = Hawk.client.header(request.url,request.method,{ credentials: credentials});\n  request.headers.Authorization = header.field;  \n\n ```\n\n## Testing Requests\n\nFor testing requests and gaining a better understanding of the API, we recommend you use Postman ([https://www.getpostman.com](https://www.getpostman.com)) , which supports Hawk authentication out of the box.\n\nOnce you have installed either the Postman client or the Postman extension for chrome, you can import this documention into Postman by clicking on the above `Run in Postman` button.\n\nAll requests have been set up so that you just need to set the following variables in a postman enviroment.\n\n- url: [https://app.absence.io](https://app.absence.io)\n    \n- hawkId: the hawkId you got from us\n    \n- hawkKey: the secrect hawk key you got from us\n    \n\nWhen these have been set up you just need to ensure that hawk authentication is enabled on all requests and click on `Update Request` in the Authorisation Tab.\n\n# OAuth 2.0 Client Credentials Flow (User-Mapped)\n\n## Integration Guide\n\nOur API supports a customized implementation of the **OAuth 2.0 Client Credentials Flow** that allows applications to obtain access tokens **on behalf of a specific user**. This ensures that all subsequent API requests using the token will reflect the permissions and access rights of that user.\n\n---\n\n## What Is This Flow?\n\nWhile the standard OAuth 2.0 Client Credentials Flow is meant for **machine-to-machine communication with no user context**, our implementation **extends it to allow mapping the access token to a specific user**.\n\n### How It Works:\n\n- A client authenticates using `client_id` and `client_secret`.\n    \n- The API issues an **access token** tied to the **permissions of the specified user**.\n    \n- All API calls using this token **operate within the scope of that user's role and permissions**.\n    \n\n---\n\n## 1\\. Registering an OAuth Client\n\n### Step 1: Access the Integrations Page\n\nLog in to your [absence.io](https://app.absence.io) account and navigate to the **Integrations** tab in your **profile settings**.\n\n### Step 2: Register a New Client\n\nCreate a new OAuth client to obtain your unique `client_id` and `client_secret`.\n\n---\n\n## 2\\. Obtaining an Access Token\n\n### Endpoint\n\n```\nPOST https://app.absence.io/api/oauth/accesstoken\n\n ```\n\n### Headers\n\n```\nContent-Type: application/x-www-form-urlencoded\n\n ```\n\n### Body Parameters\n\n| **Key** | **Value** |\n| --- | --- |\n| client_id | your_client_id |\n| client_secret | your_client_secret |\n| grant_type | client_credentials |\n\n### Example Request\n\n``` http\nPOST /api/oauth/accesstoken\nHost: app.absence.io\nContent-Type: application/x-www-form-urlencoded\nclient_id=your_client_id&client_secret=your_client_secret&grant_type=client_credentials\n\n ```\n\n### Example Response\n\n``` json\n{\n  \"access_token\": \"user_mapped_access_token\",\n  \"token_type\": \"Bearer\",\n  \"expires_in\": 900\n}\n\n ```\n\n---\n\n## 3\\. Using the Access Token\n\nUse the access token to authenticate API requests. The token enforces the permissions of the mapped user.\n\n### Example\n\n``` http\nGET /api/v1/teams\nHost: app.absence.io\nAuthorization: Bearer user_mapped_access_token\n\n ```\n\n---\n\n## 4\\. Token Expiration and Renewal\n\nAccess tokens typically **expire after a set duration** (e.g., 15 minutes). You can always request a new token by repeating the token request with the same credentials.\n\n# General Concepts\n\n## Creating an Object\n\nAll requests to create a new object follow the following pattern\n\n`HTTP POST https://app.absence.io/api/v2/[enitypath]/create`\n\n### HTTP Request:\n\n```\nHTTP POST https://app.absence.io/api/v2/user\n{\n  firstName:'Peter',\n  lastName:'Mary',\n  email:'peter.mary@johndoe.com'\n}\n\n ```\n\nwould result in a response similar to the following:\n\n### Response:\n\n```\n{\n  _id:\"114f86b938d1a200300996e7a\"\n  approverId:\"54fede756a42820300d74b7d\"\n  avatar:\"\"\n  company:\"54f81e196a72a10300e0f855\"\n  created:\"2015-03-05T14:43:31.237Z\"  \n  email:\"absence.owner@testaccount.io\"\n  firstLogin:false\n  firstName:\"Peter\"\n  holidayCountryLanguage:\"537eed02ed345b2e03965387\"\n  holidayIds:[]\n  holidaySubregion:\"custom\"\n  holidays:[\"537eed02ed345b2e0396530c\", \"537eed02ed345b2e03965358\", \"537eed02ed345b2e0396535e\",…]\n  id:\"54f86b938d1a200300996e7a\"\n  ident:25\n  inheritHolidays:true\n  isApprover:false\n  language:\"de\"\n  lastName:\"Mary\"\n  locationId:\"55bb1d28bb8cee0132771956\"\n  modified:\"2015-03-05T14:43:31.237Z\"\n  name:\"Peter Mary\"\n  notes:\"\"\n  role:\"000000000000000000001000\"\n  status:1\n  teamId:[\"54f8662b8d1a200300996de7\"]\n  vacationDays:26\n  workingDays:[[\"1970-01-01T00:00:00Z\", [1, 2, 3, 4, 5]]]\n}\n\n ```\n\n## Updating an Object\n\nAll requests to update an object follow the following pattern\n\n`HTTP PUT https://app.absence.io/api/v2/[enitypath]/:id`\n\nThe request body only needs to contain the properties that are to be changed.\n\nThe response will contain the full updated object.\n\n### HTTP Request:\n\n```\nHTTP PUT https://app.absence.io/api/v2/users/114f86b938d1a200300996e7a\n{\n  firstName:'Peter2'\n}\n\n ```\n\nwould result in a response similar to the following:\n\n### Response:\n\n```\n{\n  _id:\"114f86b938d1a200300996e7a\"\n  approverId:\"54fede756a42820300d74b7d\"\n  avatar:\"\"\n  company:\"54f81e196a72a10300e0f855\"\n  created:\"2015-03-05T14:43:31.237Z\"  \n  email:\"absence.owner@testaccount.io\"\n  firstLogin:false\n  firstName:\"Peter2\"\n  holidayCountryLanguage:\"537eed02ed345b2e03965387\"\n  holidayIds:[]\n  holidaySubregion:\"custom\"\n  holidays:[\"537eed02ed345b2e0396530c\", \"537eed02ed345b2e03965358\", \"537eed02ed345b2e0396535e\",…]\n  ident:25\n  inheritHolidays:true\n  isApprover:false\n  language:\"de\"\n  lastName:\"Mary\"\n  locationId:\"55bb1d28bb8cee0132771956\"\n  modified:\"2015-03-05T14:43:31.237Z\"\n  name:\"Peter2 Mary\"\n  notes:\"\"\n  role:\"000000000000000000001000\"\n  status:1\n  teamId:[\"54f8662b8d1a200300996de7\"]\n  vacationDays:26\n  workingDays:[[\"1970-01-01T00:00:00Z\", [1, 2, 3, 4, 5]]]\n}\n\n ```\n\n## Retrieving a Single Object\n\nAll GET requests for a single object follow the following pattern\n\n`HTTP GET https://app.absence.io/api/v2/[enitypath]/[id]`\n\ne.g. calling\n\n### HTTP Request:\n\n```\nHTTP GET https://app.absence.io/api/v2/users/53ec876edf869a0200707ac3\n\n ```\n\nwould result in a response like the following:\n\n### Response:\n\nA full object as described in the respective entity documentation.\n\n```\n{\n  _id: \"53ec876edf869a0200707ac3\"\n  approverId:\"53ec876edf869a0200707ac3\", \n  avatar: \"76e3fe57-7304-45d6-b722-dba53be05b7b\"\n  email: \"john@doe.com\"\n  firstName:\"John\",\n  lastName:\"Doe\"\n  ...\n}\n\n ```\n\n## Retrieving Data\n\nTo retrieve a list of objects, you must send a POST request which will follow the following pattern:\n\n`HTTP POST https://app.absence.io/api/v2/[enitypath]`\n\n### HTTP Request:\n\n```\nHTTP POST https://app.absence.io/api/v2/users\n{\n  skip:0,\n  limit:50,\n  filter: {\n    name:'like john'\n  }\n}\n\n ```\n\nwould result in a response like the following:\n\n### Response:\n\n```\n{\n  skip:0,\n  limit:50,\n  count:50,\n  totalCount:250,\n  data: [\n    .. array of user objects ..\n  ]\n}\n\n ```\n\nFor further details on querying data, please see the section on [querying](#/docs/basics__querying.md).\n\n# HTTP Response codes\n\nWhen sending requests to the API you can expect the following HTTP Response Codes:\n\n| Code | Name | notes/description |\n| --- | --- | --- |\n| 200 | OK | All good. A response object should be present |\n| 201 | Create/Update | All good. Empty Response |\n| 202 | Accepted | The request was accepted |\n| 204 | OK | The request was successfully handled. No response body is to be expected |\n| 400 | Bad Request | \\- item1  <br>\\- item2 |\n| 401 | Unauthorized | No, invalid or expired authorisation token |\n| 412 | Precondition failed | Could be insufficient permission\\\\ Overlapping absences  <br>Insufficient allowance  <br>No approver |\n| 418 | Teapot |  |\n| 422 | Validation failed | e.g. Missing input parameters |\n| 500 | Internal server error | you broke the server |\n\n# Querying Objects\n\nAll methods for listing data follow the conventions describe in the following.\n\n## Request Body\n\nThe http request body contains the following top level properties\n\n| property | description |\n| --- | --- |\n| limit | the maximum number of rows to be returned. default 50. max 100 |\n| skip | the number of rows to skip. use this for paging |\n| filter | (optional) the object describing how the data is to be filtered. See below for further details |\n| relations | (optional) tells the query to resolve id properties to resolve their respective entities |\n\n## Response Body\n\nThe http response body will contain the following properties:\n\n| property | description |\n| --- | --- |\n| limit | the requested limit or the applied limit if an illegal limit was requested |\n| skip | the request \"page\" |\n| count | the number of rows returned in this request |\n| totalCount | the total number of rows available on the server |\n| data | array containing the requested objects |\n\n## The Filter Object\n\nThe filter object will usually contain one or more properties, specifing which rows to include/exclude in a query. If not filter or an empty filter object is passed, then all rows will be returned.\n\nThe syntax used is very similar to the syntax mongo db\n\n### Querying for equality\n\n#### Pattern:\n\n```\n{  \n  filter:{\n    :\n  }\n}\n\n ```\n\nWhere is a property of the object being queried and a value of the same type as .  \nFor more complex queries can also be an object a query operator.\n\n#### Examples\n\n```\nPOST http://app.absence.io/api/v2/users\n{  \n  filter:{\n    firstName:'Peter'\n  }\n}\nwill return all users, where the value of firstName is Peter.\n\n ```\n\n```\nPOST http://app.absence.io/api/v2/absences\n{  \n  filter:{\n    assignedToId:'560bd9d03b4cbb24470ee7ee'\n  }\n}\nwill return all absences, which are assignedTo the user with the id 560bd9d03b4cbb24470ee7ee\n\n ```\n\n### Querying with query operators\n\nQuery operators help you phrase more complex queries. Query operators all start with a `$` as the first letter.\n\n### Query operators\n\n| operator | description |\n| --- | --- |\n| $in | Matches any of the values specified in an array |\n| $nin | Matches none of the values specified in an array |\n| $gt | Matches values that are greater than a specified value. |\n| $gte | Matches values that are greater or equal than a specified value. |\n| $lt | Matches values that are leass than a specified value. |\n| $lte | Matches values that are leass or equal than a specified value. |\n\n## Sorting\n\nAll queries support a sortBy Object, which can point to any properties on the main entity. Sort on relations is not supported.\n\nThe following query will return all absences sorted by ascencding start date.\n\n```\nPOST http://app.absence.io/api/v2/absences\n{  \n  sortBy:{\n    start:1\n  }\n}\n\n ```\n\nTo retrieve all absences sorted by descending start date, set the sortValue to -1.  \ne.g.\n\n```\nPOST http://app.absence.io/api/v2/absences\n{  \n  sortBy:{\n    start:-1\n  }\n}\n\n ```\n\n## Logical Operators\n\nBy default, when passing mulitple properties in the filter object, an AND query will be peformed.\n\n```\nPOST http://app.absence.io/api/v2/users\n{  \n  filter:{\n    firstName:'Peter',\n    lastName:'Mary'\n  }\n}\nwill return all users, where the value of firstName is Peter AND the value of lastName is Mary. \n\n ```\n\nto turn this query into an OR query the following syntax does the job:\n\n```\nPOST http://app.absence.io/api/v2/users\n{  \n  filter:{\n    $or: [\n      {firstName:'Peter'},\n      {lastName:'Mary'}\n    ]\n  }\n}\nthis will return all users, where the value of firstName is Peter or the value of lastName is Mary. \n\n ```\n\nAND an OR can be also be combined:\n\n```\nPOST http://app.absence.io/api/v2/users\n{  \n  filter:{\n    locationId:'560bd9d03b4cbb24470ee7ee',\n    $or: [\n      {firstName:'Peter'},\n      {lastName:'Mary'}\n    ]\n  }\n}\nthis will return all users belonging to the specified location AND whos firstName is Peter or whos lastName is Mary. \n\n ```\n\n## Querying Strings\n\nWhen querying strings, by default a case-senstive exact match will be performed.\n\nTo do a case insensitive substring match you can add a `like` at the begining of the string.\n\n```\nPOST http://app.absence.io/api/v2/absences\n{  \n  filter:{\n    commentary:'like feeling blue'\n  }\n}\nThis will return all absences in which the comment contains the string `feeling blue`.\n\n ```\n\n## Querying Dates\n\nDate values must be passed in the ISO 8601 Format.\n\n```\nPOST http://app.absence.io/api/v2/absences\n{  \n  filter:{\n    start:'2015-04-23T00:00:00.000Z'\n  }\n}\n\n ```\n\nor as YYYY-MM-DD\n\n```\nPOST http://app.absence.io/api/v2/absences\n{  \n  filter:{\n    start:'2015-04-23'\n  }\n}\n\n ```\n\nwill evalue to '2015-04-23T00:00:00.000Z'\n\n### Get all absences and sort by last name of the assigned user\n\n```\nPOST http://app.absence.io/api/v2/absences\n{ \n  sortBy:{'assignedToLastName':1}\n}\n\n ```\n\n### Get all users absent today from the dev team\n\n```\nPOST http://app.absence.io/api/v2/users\n{ \n    \"filter\": {\n    \"_id:absence.assignedTo\" : {\n      \"start\": {\"$lte\" : \"2015-12-28T00:00:00.000Z\"},\n        \"end\": {\"$gte\": \"2015-12-28T00:00:00.000Z\"},\n    },\n    \"teamId:teams._id\" :{\n      name:'development'\n    }\n    }\n}\n\n ```\n\n# Relations\n\nUsing relations, you can tell the service to resolve id properties to their respective objects.\n\nBy adding a relations array to the request body, you tell the server to load the full object for the id property of the main entity\n\ne.g. To resolve the assignedToId to a property called assignedTo use the following syntax:\n\n```\nRequest\nPOST http://localhost:3000/api/v2/absences\n{ \n    \"filter\": {\n      \"start\": {\"$lte\" : \"2015-12-20T00:00:00.000Z\"},\n        \"end\": {\"$gte\": \"2015-12-31T00:00:00.000Z\"}\n    },\n    relations:['assignedToId']\n}\n\n ```\n\n```\nResponse\n{\n  \"skip\": 0,\n  \"limit\": 50,\n  \"count\": 50,\n  \"totalCount\": 458,\n  \"data\": [\n    {\n      \"_id\": \"5480402809650202004df75b\",\n      \"modified\": \"2014-12-06T10:04:39.006Z\",\n      \"created\": \"2014-12-04T11:06:16.471Z\",\n      \"start\": \"2014-12-03T00:00:00.000Z\",\n      \"end\": \"2014-12-08T00:00:00.000Z\",\n      \"assignedToId\": \"63ec876edf869a0200707ac3\",\n      \"assignedTo\": {\n        \"_id\": \"63ec876edf869a0200707ac3\",   \n        \"email\": \"absence.owner@gmail.com\",\n        \"lastName\": \"Lebbe\",\n        \"firstName\": \"Christina\",      \n   ...\n   ...\n}\n\n ```","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"799608","team":17150,"collectionId":"4b3b52d8-ce58-4545-8bbf-b2497b68e3a0","publishedId":"RWaEyA7c","public":true,"publicUrl":"https://docs.absence.io","privateUrl":"https://go.postman.co/documentation/799608-4b3b52d8-ce58-4545-8bbf-b2497b68e3a0","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"EF5B25"},"documentationLayout":"classic-double-column","customisation":null,"version":"8.10.1","publishDate":"2022-08-12T14:03:26.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{},"logos":{}},"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/9251c2e1568be54ab6260a7728a871ff6092ebda2acd6eb896c428533c0a00c6","favicon":"https://absence.io/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.absence.io/view/metadata/RWaEyA7c"}