{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"3645c401-efa7-422c-9b5a-c4b7f6bc0cce","name":"TV 2 Play Partner API docs v. 1.3.4","description":"This documentation describes how to interact with TV 2 Play Partner API, also simply called Partner API. The Partner API is a RESTfull web service which acts as a common interface for partners to create and manage TV 2 Play subscriptions.\n\n## Target Audience\n\nThe Partner API documentation is intended for software developers at partners that wishes to use the Partner API and therefore contains descriptions that requires basic knowledge of RESTful API. The documentation can also be useful for other individuals at the partner, that wants to learn about the logic and behavior of the Partner API and partner subscriptions.\n\n## Partner API Status\n\n[http://partner-api-status.tv2.dk/](http://partner-api-status.tv2.dk/)\n\n## Dictionary\n\n| Word/phrase | Definition |\n| --- | --- |\n| TV 2 user | A user account at TV 2 |\n| TV 2 subscription | A TV 2 Play subscription managed by TV 2. |\n| Partner subscription | A TV 2 Play subscription managed by a partner. |\n| Subscriber | A user that is subscribed to a subscription |\n| TV 2 subscriber | A user that is subscribed to a TV 2 subscription. |\n| Partner subscriber | A user that is subscribed to a partner subscription. |\n| VAS token | The ID of a subscriber (Value Added Service token). |\n| Associate ID | The ID of a ralation between a partner and its associates/sub-partners. |\n| Agreement ID | The ID of a agreement with TV 2, spanning one or multiple products. |\n| Product | A TV 2 Play product, e.g. _Favorit uden reklamer_ or _Basis med reklamer_. |\n\n## Changelog\n\n| Version | Change |\n| --- | --- |\n| 1.3.4 | \\- Minor text changes. |\n| 1.3.2 | \\- Corrected URL's for Swagger UI and RapiDoc. |\n| 1.3.1 | \\- Removed email from subscriber responses. |\n| 1.3.0 | \\- Applied new TV 2 CVI.  <br>\\- Updated dictionary.  <br>\\- Removed link to Redoc from the section _Communicating with the API_.  <br>\\- Added a short description of enpoint operations at the section _Data model_.  <br>\\- Added the section _The partner-subscriber-user relation_.  <br>\\- Added description of test partner key to the section _Testing the service_.  <br>\\- Removed \"TV 2 subscription cancellation\" and \"close subscription\" from the section _Emails sent to subscribers_.  <br>\\- Removed \"TV 2 subscription cancellation\" from the section _Create subscriber._  <br>\\- Limited subscription status to ACTIVE at the section _Fetch subscribers_.  <br>\\- Simplified the section _Remove subscriber_.  <br>\\- Removed \"not possible to reactivate warning\" from the section _Remove subscriber_. |\n| 1.2.5 | \\- Updated variable naming for updates and to avoid misunderstanding.  <br>\\- Renaming of type to data type.  <br>\\- Introducing an additional column stating the type indicating if it's a header/ path/ query or body parameter. |\n| 1.2.4 | \\- Updated the swagger documentation URL. |\n| 1.2.3 | \\- Added description of new Malformed Email Address error. |\n| 1.2.2 | \\- Elaborated on fetching subscribers by subscription status. |\n| 1.2.1 | \\- Added description of new Unknown Agreement error. |\n| 1.2.0 | \\- Created the Partner API manual as a Postman documentation.  <br>\\- Moved agreement ID from subscriber resource object to subscription resource object.  <br>\\- Made agreement ID mandatory at create subscriber request description.  <br>\\- Added description of agreement-product relation.  <br>\\- Changed fetch products request description to reflect the new agreement-product relation.  <br>\\- Added description of new Product Change Violation error.  <br>\\- Removed description of cancel subscription and resume subscription. |\n\n# Communicating with the API\n\nThe Partner API documentation contains example requests for all endpoints in multiple programming languages. Moreover, the Partner API is described by Swagger and RapiDoc API documentation which can be reached at:  \n[https://play-partner.tv2api.dk/swagger/views/swagger-ui/index.html](https://play-partner.tv2api.dk/swagger/views/swagger-ui/index.html) and  \n[https://play-partner.tv2api.dk/swagger/views/rapidoc/index.html](https://play-partner.tv2api.dk/swagger/views/rapidoc/index.html)\n\n## Data Transmission and Security\n\nBecause some requests/responses will contain sensitive data, all data is transmitted via HTTPS on the default port (443). The Partner API is hosted on fault tolerant and redundant servers. Because of this, you must connect to the service via the DNS name and not the IP address directly, as the IP address might change.\n\n## Data model\n\nThe API is build upon the concept of a subscriber, that is subscribed to subscriptions, and each subscription is assigned a product. In order to manage the concepts _subscriber_, _subscription_ and _product_, they are each exposed as a resource object in JSON through the endpoints:\n\n```\n/subscribers    <-- Create, fetch, update or remove subscribers\n/subscriptions  <-- Update product and/or agreement ID at a subscriber's subscription \n/products       <-- Fetch a list of available products organised by agreement ID\n\n ```\n\nThe subscriber resource contains one or many subscriptions. A subscription resource contains one product ID. The following shows the entire subscriber resource with its subscription:\n\n``` json\n\"subscriber\": {\n    \"vasToken\": \"{{vasToken}}\",\n    \"email\": \"{{email}}\",\n    \"firstName\": \"{{firstName}}\",\n    \"birthYear\": {{birthYear}},\n    \"gender\": \"{{gender}}\",\n    \"associateId\": {{associateId}},\n    \"createPasswordLink\": \"{{createPasswordLink}}\",\n    \"subscriptions\": [\n        {\n            \"status\": \"{{status}}\",\n            \"start\": \"{{start}}\",\n            \"renew\": \"{{renew}}\",\n            \"freePeriod\": {{freePeriod}},\n            \"productId\": {{productId}},\n            \"productName\": \"{{productName}}\",\n            \"agreementId\": \"{{agreementId}}\"\n        }\n    ]\n}\n\n ```\n\n| JSON property | Data Type | Description |\n| --- | --- | --- |\n| vasToken | String | The unique identifier of the subscriber, which is defined and supplied by the partner. |\n| email | String | The email of the subscriber which the subscriber uses as part of the login credentials at TV 2. |\n| firstName | String | The first name of the subscriber. |\n| birthYear | Number | The birth year of the subscriber. The format is YYYY. |\n| gender | String | The gender of the subscriber, is either F (female), M (male) or U (unknown). |\n| associateId | Number | The associate ID, which is created by the partner and used to link the subscriber to a partner’s associate. |\n| createPasswordLink | String | The link to the subscriber’s create password web page at TV 2. The link is present if the following two criteria are met: (1) an agreement with TV 2 has been made to disable activation emails, (2) a new TV 2 user has been created. If one of the criteria are not met, the link will be absent. |\n| status | String | The status of the subscription. Can be either ACTIVE or EXPIRED |\n| start | String | The date-time for the creation of the subscription. The format is yyyy-MM-dd'T'HH:mm:ssssss'Z' |\n| renew | String | The date-time for next renewal or subscription termination. The format is yyyy-MM-dd'T'HH:mm:ssssss'Z' |\n| freePeriod | Number | The number of days without subscription fee. The free period is at subscription start. Whether free period is given and the lenght of free period is defined in cooperation with TV 2. |\n| productId | Number | The product ID for this subscription. |\n| productName | String | The name of the product. |\n| agreementId | String | The identifier of the agreement. The agreement is typical a pricing model for a specific package solution at a partner. The agreement also contains product rules. Agreement IDs are defined in cooperation with TV 2. |\n\n> _**NOTE:**_ Requests and responses does not contain all of the JSON properties of the respected resource. The expected and necessary properties for the requests and the properties returned in the responses can be seen at the request descriptions. \n  \n> _**NOTE:**_ The endpoint _/subscribers_ can be used to fetch subscriber resources, incl. subscriptions, but can only update the subscriber resource, not the subscription. Use the endpoint _/subscriptions_ to update a subscriber's subscription. \n  \n\n## The partner-subscriber-user relation\n\nA TV 2 user is a unified single account utillized by the end-user to access TV 2 Play and other systems supplied by TV 2. Logging in requeres an email and a password. Normally the password is set by the end-user at user creation, but if the user is created through the Partner API a _create-password-link_ is sent to the email address. The end-user is free to change the email adress and the password whenever they see fit.\n\nA subscriber is an abstraction of the TV 2 user. At subscriber creation, an email and a VAS token is supplied by the partner. At creation, the email is used as an identifier of the TV 2 user that should be linked to the subscriber. If no TV 2 user with the email exists, a new TV 2 user with the email will be created. The VAS token is henceforth used as the subscribers identifier; thus the partner has a subscriber identifier that is independent on the dynamic email of the TV 2 user. Learn more at the section [Create subscriber](#7a0aad34-632f-4986-b81d-901d2729ffe7).  \nA subscriber is created with an active subscription. It is the subscription, that grants the TV 2 user access to watch content at TV 2 Play. If the partner wishes to cancel the subscription, the partner must use the remove subscriber endpoint; learn more at the section [Remove subscriber](#620e4f07-aa2f-4447-841a-3ddaa69eea6c).\n\nA partner can have multiple subscribers, but only one subscriber per TV 2 user and a subscriber has one active subscription, see _Figure 1: The partner-subscriber-subscription relation_. Thus, it is not possible for a partner to create multiple active subscriptions to one single user. Note that if the partner has cancelled the subscription, by _remove subscriber_, the subscription is no longer active and the partner is able to create a new active subscription by _create subscriber._\n\n<img src=\"https://content.pstmn.io/f908ec1e-2c93-4a2b-a88f-9d861a96ea75/UGFydG5lci1zdWJzY3JpYmVyLXN1YnNjcmlwdGlvbiByZWxhdGlvbiAoMikucG5n\" alt=\"Figure%201:%20The%20partner-subscriber-subscription%20relation\">\n\nMoreover, the partner subscription will exist in parallel with a TV 2 subscription, if any, and exist in parallel with any partner subscriptions from other partners, see _Figure 2: Parallel existence of TV 2 subscription and partner subscriptions_. Meaning, that subscriptions created by the end-user through Play and subscriptions created by partners cannot affect each other. It also means, that a Partner cannot use the Partner API to fetch/search, update or delete TV 2 subscriptions or subscriptions created by other partners. But, the end-user is able to get an overview of all subscriptions and who supplies them at the TV 2 user administration site called _Mit TV 2_.\n\n<img src=\"https://content.pstmn.io/a40bacab-9d31-4751-bbab-ffa5f56eb146/UGFyYWxsZWwgZXhpc3RlbmNlIG9mIFRWIDIgc3Vic2NyaXB0aW9uIGFuZCBwYXJ0bmVyIHN1YnNjcmlwdGlvbnMgKDEpLnBuZw==\" alt=\"Figure%202:%20Parallel%20existence%20of%20TV%202%20subscription%20and%20partner%20subscriptions\">\n\n## Agreement-product relation\n\nAll subscriptions are assigned to an agreement ID and a product ID. Both are mandatory at creation and can not be removed. Agreement ID and product ID are updatable, however. Go to [Update subscription](#f3e9dd57-d848-4381-9d27-5c3aea7201f4) to learn more about how to update the agreement ID and product ID.  \nAt creation of a subscriber and when updating the agreement ID and/or product ID at the subscription, the agreement ID and product ID has to comply with the agreement-product relation. The agreement-product relation contains two rule sets:\n\n1. Product availability rules - Each agreement has a list of available products. Get a list of available products by use of [Fetch products](#0e95932a-a7ca-4740-86d0-7330cb1ba5b7).\n    \n2. Product upgrade/downgrade rules - When changing a product and keeping the agreement ID unchanged, the resulting product update or downgrade has to comply with the upgrade/downgrade rules that are defined in cooperation with TV 2.\n    \n\n## Emails sent to subscribers\n\nWhen the Partner API executes certain requests, the API will send emails to the end-users. The following is a list of actions and the resulting emails.\n\n| Email no. | Endpoint | Action | Mail description |\n| --- | --- | --- | --- |\n| 1 | POST /subscribers | Create new TV 2 user to create subscriber and subscription | Login information to new TV 2 user including link to create a password at TV 2 Play |\n| 2 | POST /subscribers | Utilise existing TV 2 user to create subscriber and subscription | Login information to existing TV 2 user with instructions to use existing email and password |\n| 3 | PUT /subscribers/{vasToken} | Change email | Email changed by partner |\n| 4 | DELETE /subscribers/{vasToken} | Remove/detach subscriber from the partner and close subscription | Access to TV 2 Play is closed by partner |\n\n# Errors\n\nThis service can return two categories of errors; an error and a validation error. A validation error is returned if the input is invalid, e.g. parameters are missing or parameters contains illegal values. Validation errors are returned with HTTP status code 400 and a response body containing a list of validation errors formatted in JSON. A single validation error response can contain one to many validation errors as shown in the example below.\n\n```\nHTTP status code: 400\n{\n    \"validationErrors\": [\n        {\n            \"message\": \"Specified value 'newmailtv2.dk' is not a valid email\"\n        },\n        {\n            \"message\": \"vasToken cannot be null\"\n        }\n    ]\n}\n\n ```\n\nAll other types of errors, that are not validation errors, are returned as an error. An error is returned if, e.g. the VAS token in a create subscriber request is occupied or the product ID is unknown. Errors are returned with a HTTP status code and a response body containing an error code and an error message as shown in the following example.\n\n```\nHTTP status code: 400\n{\n    \"errorCode\": 5007,\n    \"errorMessage\": \"VAS token already in use. Another subscriber at the partner uses the VAS token.\"\n}\n\n ```\n\nThe chapter _Error codes_ contains a list of errors inlc. HTTP status codes, error codes and error messages.\n\n## Error codes\n\nErrors are returned with a HTTP status code and a response body containing an error code and an error message. A client of this service can recognize a distinct error by the error code while the error message supplies a human readable error description. The purpose of the error messages is to inform the writer of the service client and therefore it is not recommended to pass the error massage to the end user.\n\n| HTTP status code | errorCode | errorMessage |\n| --- | --- | --- |\n| 400 (Bad Request) | 5007 (VAS Token Occupied) | VAS token already in use. Another subscriber at the partner uses the VAS token. |\n| 400 (Bad Request) | 5008 (Email Occupied) | Email already in use. Another subscriber at TV 2 uses the email. |\n| 400 (Bad Request) | 5014 (Malformed Email Address) | Email address contains a faulty/non-existent domain. Faulty domain: {faultyDomain}. Suggested domain: {suggestedDomain}. |\n| 400 (Bad Request) | 5009 (Product Unavailable) | Product unavailable. The product is not grantable by the combination of partner and agreement or the product does not exist. |\n| 400 (Bad Request) | 5012 (Product Change Violation) | Product Change Violation. Product change can not be executed within the agreement. |\n| 400 (Bad Request) | 5013 (Unknown Agreement) | Unknown agreement. The agreement ID is not registered to the partner. |\n| 401 (Unauthorized) | N/A | N/A |\n| 404 (Not Found) | 5005 (Subscriber Not Found) | Subscriber not found. Could not find a subscriber with the VAS token. |\n| 404 (Not Found) | 5006 (Subscription Not Found) | Subscription not found. Could not find a subscription with the product ID. |\n| 500 (Internal Server Error) | 1000 (Unknown Error) | Unknown error. |\n| 502 (Bad Gateway) | 4002 (Gateway error) | Gateway error. |\n\n# Testing the service\n\nTV 2 will charge the partner for subscriptions created by the Partner API accoring to the partner agreement. To avoid charges while testing, there are two options:\n\n1. Test mode  \n    The API will use stubs, programmed to return fixed values. Therefore no changes will be made and therefore change operations (create, update and delete) will not be persisted. Test mode is for checking that requests are readable for the Partner API and responses are readable by the partner.\n    \n2. Test partner key  \n    In addition to a partner key, TV 2 may delever a test partner key. The test partner key gives access to a second account in the production environment at TV 2, called a test account. The test account has the same features as the normal account, but subscriptions are automatically closed after a short amount of days and the partner is not charged for these subscriptions.\n    \n\n> **WARNING**: By using a test partner key, emails are sent as if using a normal partner key. Therefor it is highly recommended _not_ to use emails of actual people; instead use bogus emails like \"[test123456@mailinator.com](https://mailto:test123456@mailinator.com)\". \n  \n> **NOTE**: To test in _test mode_, you need a partner key. \n  \n\n# Troubleshooting\n\nThis chapter explanes the common way of dealing with specific error responses from the Partner API.\n\n| HTTP status code | errorCode | Solutions |\n| --- | --- | --- |\n| 400 (Bad Request) | 5007 (VAS Token Occupied) | Use a VAS token that is not occupied by the partner, or free the VAS token by using the [remove subscriber](#620e4f07-aa2f-4447-841a-3ddaa69eea6c) request to remove/detach the subscriber that occupies the VAS token. |\n| 400 (Bad Request) | 5008 (Email Occupied) | Use a email that is not occupied by a subscriber at TV 2. |\n| 400 (Bad Request) | 5009 (Product Unavailable) | Check that the product ID is correct and that the agreement ID contains the product ID by use of [fetch products](#b10108aa-d83b-4cbe-8481-fe897acbdb8a). |\n| 400 (Bad Request) | 5012 (Product Change Violation) | It is not allowed to change from the current product to the targeted product within the agreement. |\n| 400 (Bad Request) | 5013 (Unknown Agreement) | A non-existing agreement ID has been used. Use an existing agreement ID. A list of all agreement ID's can be retrieve by [fetch products](#b10108aa-d83b-4cbe-8481-fe897acbdb8a). |\n| 401 (Unauthorized) | N/A | Check that the bearer token and the format of the bearer token is correct. |\n| 404 (Not Found) | 5005 (Subscriber Not Found) | Check that the VAS token is correct. |\n| 404 (Not Found) | 5006 (Subscription Not Found) | Check that the product ID is correct and that the subscriber has a subscription with that product ID. |\n| 500 (Internal Server Error) | 1000 (Unknown Error) | Contact TV 2 if the error persists. |\n| 502 (Bad Gateway) | 4002 (Gateway error) | Contact TV 2 if the error persists. |\n\n# FAQ\n\nQ: I get {\"errorCode\":4007,\"errorMessage\":\"Not acceptable media type, please referer to the documentation for accepted media types\"} in my response body. What should I do?  \nA: The error is caused by a missing Accept HTTP header. Add the HTTP header _Accept_ with the value _application/json_.\n\nQ: Why can I not find my subscriber in the response from fetch subscribers?  \nA: The subscriber may be filtered out. Change the parameters limit, offset and/or status to include the subscriber in the get subscribers response.\n\nQ: I get VAS Token Occupied when creating a subscriber. How can I reuse a VAS token that is occupied?  \nA: Use [remove subscriber](#620e4f07-aa2f-4447-841a-3ddaa69eea6c) to remove/detach the occupying subscriber from your partner user. By doing so, the VAS token will become unoccupied and can be reused at [create subscriber](#7a0aad34-632f-4986-b81d-901d2729ffe7). Bevare that remove subscriber closes the subscription of the subscriber and that you will no longer be able to fetch or update the subscriber or the subscription.","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"6156495","team":220192,"collectionId":"3645c401-efa7-422c-9b5a-c4b7f6bc0cce","publishedId":"2sB3BDKqvc","public":true,"publicUrl":"https://play-partner.doc.tv2api.dk","privateUrl":"https://go.postman.co/documentation/6156495-3645c401-efa7-422c-9b5a-c4b7f6bc0cce","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":"2025-08-08T06:43:48.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/9a30205bed90605e386d7889afd0995a744d2b6ed5755f21778950b0763a9c6a","favicon":"https://res.cloudinary.com/postman/image/upload/v1679569945/team/nazjdd8khsiuxzqno75i.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://play-partner.doc.tv2api.dk/view/metadata/2sB3BDKqvc"}