{"info":{"_postman_id":"27038313-1498-45b2-9e6f-253b5f9ed077","name":"VHD Enterprise API-documentation","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"description":"<html><head></head><body></body></html>","owner":"18007588","collectionId":"27038313-1498-45b2-9e6f-253b5f9ed077","publishedId":"2s93JwNN7T","public":true,"customColor":{"top-bar":"0099CC","right-sidebar":"303030","highlight":"0099CC"},"publishDate":"2023-06-15T19:28:53.000Z"},"item":[{"name":"INTRODUCTION","item":[],"id":"a8dfb716-1170-4ce2-a9e9-cb14f1949f83","description":"<h1 id=\"getting-started-with-api\">Getting Started with API</h1>\n<p>The provided documentation encompasses the complete range of VHD APIs for Enterprise. By simply glancing at the left-side navigation menu, you can explore the entire VHD product stack for Enterprise. Each product includes comprehensive documentation for all accessible API endpoints and webhooks.</p>\n<p>API is based on REST standards, enabling you to use your browser for accessing URLs. In order to interact with our API, any HTTP client in any programming language can be used.</p>\n<h2 id=\"support\">Support</h2>\n<p>If you need help, do the following;</p>\n<ol>\n<li>Email: <a href=\"mailto:support@vhdmedia.se\">support@vhdmedia.se</a></li>\n<li>Submit your Username</li>\n<li>Submit YOUR name and YOUR contact details</li>\n<li>Describe what you were doing when the error occurred</li>\n<li>Describe any (error) messages that appeared</li>\n<li>If you have any issues in receiving SMS, please submit the receiver's phone number</li>\n</ol>\n<p>Without the information above, it is very difficult for us to handle and solve your errand. Also, without the information, the time for us to handle your errand might demand more time.  </p>\n<p>Call us: + 46 (0) 10-160 50 40.<br /><em><strong>Observe</strong></em> <em>that all support errands that are called in are first line errands. If your errand is prioritized, our support will create an errand and get back to you through email.</em></p>\n<h2 id=\"base-url\">Base URL</h2>\n<p>Submit all requests to the base URL. All the requests are submitted thorough HTTP POST or GET method. Connecting via SMPP? Please look below.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>https://go2.vhdmedia.se\n\n</code></pre><h2 id=\"smpp\">SMPP</h2>\n<p>For those of you who use SMPP, all information is on the left in the menu. Please note that you need to activate SMPP with us before you start. Contact <a href=\"mailto:support@vhdmedia.se\">support@vhdmedia.se</a> (state your username and contact details) and we will get back with an activation and more information.</p>\n<h2 id=\"content-type--accept-header\">Content-Type &amp; Accept header</h2>\n<p>API supports JSON and XML Content-Types and Accept criteria that should be specified in the header. If the Content-Type is not specified you will receive a General error. Depending which Accept type is chosen in the deader for the request, the same one will be applied in the response.</p>\n<ul>\n<li>Content-Type: <code>application/json</code> or <code>application/xml</code></li>\n<li>Accept header: <code>application/json</code> or <code>application/xml</code></li>\n</ul>\n","_postman_id":"a8dfb716-1170-4ce2-a9e9-cb14f1949f83"},{"name":"AUTHORIZATION","item":[],"id":"361f0fb8-0afe-48fc-964a-70cb19d4eb59","description":"<h1 id=\"authorization\">Authorization</h1>\n<p>In order to make API requests through the VHD API, authentication via the Authorization header is required. There are several authentication methods available, including:</p>\n<ul>\n<li>HTTP Basic authentication</li>\n<li>API Keys</li>\n</ul>\n<p>The method chosen should align with the current technology stack and level of security required. However, it is recommended to combine authentication methods with other security mechanisms, such as an encrypted connection or SSL, due to the vulnerability of some of the methods to man-in-the-middle attacks.</p>\n<p>If there are any potential issues, reference the <strong>Response status and Error codes</strong> section for troubleshooting or reach out to the VHD Support team for assistance.</p>\n<h2 id=\"basic-authentication\">Basic authentication</h2>\n<p>Basic authentication, which involves sending a username and password with each API request. This method is typically used when the API key is not available, for example, API methods that generate API keys may be authenticated with Basic authentication. However, it is the least recommended method since it is relatively easy to decode encrypted credentials back to their original values. The HTTP Authentication resource provides information on how to restrict server access using Basic authentication.</p>\n<p>We support basic authorization using a username and password with Base64 encoding variation RFC2045-MIME.</p>\n<p>The authorization header is constructed as follows:</p>\n<ol>\n<li>Username and password are combined into a string <strong>username:password</strong>.</li>\n<li>The resulting string is encoded using the RFC2045-MIME variant of Base64.</li>\n<li>The authorization method and a space, like this: <code>\"Basic \"</code>, are put before the encoded string.</li>\n</ol>\n<h3 id=\"example\">Example</h3>\n<p>Username: myUsername<br />Password: myPassword</p>\n<p>Base64 encoded string: <code>QWxhZGRpbjpvcGVuIHNlc2FtZQ==</code>Authorization header: <code>Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==</code></p>\n<h2 id=\"api-key-header\">API Key Header</h2>\n<p>An API key is an access token that a client provides when making API calls. It's a simple way to secure access and thus the most popular authentication method used with REST APIs. The key can be sent in the query string or as a request header. You are automatically assigned an API Key once you create an account. Generate more keys and manage the existing ones through the VHD API key management page, please contact us if you need help.</p>\n<h3 id=\"create-api-key\">Create API Key</h3>\n<p>Here are some key facts about this method:</p>\n<ul>\n<li>API keys can be generated by calling the dedicated API method</li>\n<li>Keys can be revoked at any time which is useful when separating the API access rights across multiple applications or use cases</li>\n<li>Lost API keys are easily retrievable</li>\n<li>VHD API keys have a predefined expiry date to eventually become invalid</li>\n</ul>\n<h2 id=\"example-1\">Example</h2>\n<p>key: Authorization<br />value: App {{API_KEY}}</p>\n<img src=\"https://content.pstmn.io/69753a2f-ff1f-48c5-b178-b46a1845af37/U2NyZWVuc2hvdCAyMDIzLTAzLTE1IGF0IDEwLjM1LjM1IFBNLnBuZw==\" />\n\n<h2 id=\"variables-used-in-this-collection\">Variables used in this collection</h2>\n<p>The requests use Postman variables, shown in double curly braces such as <code>{{API_KEY}}</code>. Set them in your environment before sending requests.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Variable</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>API_KEY</code></td>\n<td>Your VHD API key. It is sent in the <code>Authorization</code> header as <code>App {{API_KEY}}</code> on every request.</td>\n</tr>\n<tr>\n<td><code>testNumber</code></td>\n<td>The phone number, in international format without a leading <code>+</code> (for example <code>46731234567</code>), that receives messages and voice calls when you run the send requests. The documentation examples use <code>46731234567</code>; at run time it is replaced with the value of <code>testNumber</code>. If it is empty, send requests are not sent.</td>\n</tr>\n<tr>\n<td><code>testEmail</code></td>\n<td>The email address that receives emails when you run the email send requests. The documentation examples use <code>jane.smith@vhdmedia.se</code> and <code>tom.smith@vhdmedia.se</code>; at run time they are replaced with the value of <code>testEmail</code>. If it is empty, email send requests are not sent.</td>\n</tr>\n<tr>\n<td><code>testVoiceNumber</code></td>\n<td>The phone number that receives the voice calls, international format without <code>+</code>. Optional: if it is empty, <code>testNumber</code> is used. Use a separate number when your <code>testNumber</code> is on a do-not-disturb list (calls to it are rejected with <code>REJECTED_DND</code>).</td>\n</tr>\n<tr>\n<td><code>bulkId</code></td>\n<td>ID of a bulk (one request that contains one or more messages). It is returned in the response of a send request and used to fetch delivery reports and logs, and to view, reschedule, pause, or cancel scheduled messages.</td>\n</tr>\n<tr>\n<td><code>voiceBulkId</code></td>\n<td>ID of a scheduled voice bulk, used by the <strong>Get sent voice bulks</strong>, <strong>Reschedule</strong>, and <strong>status</strong> requests. Without it those requests are skipped.</td>\n</tr>\n<tr>\n<td><code>runVoiceCalls</code></td>\n<td><code>true</code> or <code>false</code> (default <code>false</code>). The voice requests that place a real call to <code>testNumber</code> run only when this is <code>true</code>.</td>\n</tr>\n<tr>\n<td><code>ivrFileId</code></td>\n<td>ID of a recorded Voice IVR file, used by <strong>Download Voice IVR Recorded File</strong>.</td>\n</tr>\n<tr>\n<td><code>callsConfigurationId</code>, <code>callLinkConfigId</code>, <code>callLinkId</code>, <code>callId</code>, <code>callsFileId</code>, <code>numberKey</code></td>\n<td>IDs that the Calls, Call links and Numbers requests save for the requests after them. You do not need to set them.</td>\n</tr>\n<tr>\n<td><code>ivrScenarioId</code></td>\n<td>ID of a Voice IVR scenario, used by <strong>Launch outbound IVR</strong>. Create a scenario first, or copy an ID from <strong>Search Voice IVR Scenarios</strong>.</td>\n</tr>\n<tr>\n<td><code>emailBulkId</code></td>\n<td>ID of a scheduled email bulk, used by the scheduled email requests (get, reschedule, pause or cancel). Email bulks and SMS bulks must use different IDs: do not reuse your SMS <code>bulkId</code> for emails.</td>\n</tr>\n<tr>\n<td><code>messageId</code></td>\n<td>ID of a single message, returned in the response of a send request. Use it to fetch the delivery report or log of one message.</td>\n</tr>\n<tr>\n<td><code>sendAt</code></td>\n<td>Date and time to send a scheduled message, format <code>yyyy-MM-dd'T'HH:mm:ss.SSSZ</code> (UTC). It is kept up to date automatically: if it is empty, less than a day away, or more than 4 days away, it is set to 3 days from now each time you run a request, so it works for every channel. Limits: SMS up to 180 days ahead, email v3 up to 30 days, email v4 up to 5 days. Voice messages were tested with 3 days; no limit was checked.</td>\n</tr>\n<tr>\n<td><code>id</code></td>\n<td>ID of the resource in the request path, for example a Voice IVR scenario or recorded file.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>Name of the resource in the request path, for example a tag or a custom attribute.</td>\n</tr>\n<tr>\n<td><code>personId</code></td>\n<td>The identifier of the person that People requests act on, for example an email address or a phone number. Used with <code>personIdentifierType</code>.</td>\n</tr>\n<tr>\n<td><code>personIdentifierType</code></td>\n<td>The type of <code>personId</code>: for example <code>EMAIL</code> or <code>PHONE</code>.</td>\n</tr>\n<tr>\n<td><code>listName</code></td>\n<td>Name of a person list, used by the <strong>PERSON LISTS (API v3)</strong> requests.</td>\n</tr>\n<tr>\n<td><code>itemId</code></td>\n<td>ID of one item in a person list.</td>\n</tr>\n<tr>\n<td><code>itemIds</code></td>\n<td>ID or IDs of list items, comma-separated.</td>\n</tr>\n<tr>\n<td><code>segmentId</code></td>\n<td>ID of a segment, used by the <strong>SEGMENTS</strong> requests.</td>\n</tr>\n<tr>\n<td><code>from</code></td>\n<td>Sender ID: alphanumeric (3 to 11 characters) or numeric (3 to 14 digits).</td>\n</tr>\n<tr>\n<td><code>to</code></td>\n<td>Destination phone number or numbers in international format.</td>\n</tr>\n<tr>\n<td><code>text</code></td>\n<td>Text of the message.</td>\n</tr>\n</tbody>\n</table>\n</div>","_postman_id":"361f0fb8-0afe-48fc-964a-70cb19d4eb59"},{"name":"SMS","item":[{"name":"SEND SMS","item":[{"name":"Send SMS messages (API v3, latest)","event":[{"listen":"test","script":{"exec":["// Status","pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","","var res = pm.response.json();","","pm.test(\"Response has bulkId\", function () {","    pm.expect(res).to.have.property('bulkId').that.is.a('string');","});","","pm.test(\"Response contains 'messages' array\", function () {","    pm.expect(res).to.have.property('messages').that.is.an('array').with.lengthOf.at.least(1);","});","","pm.test(\"Each message has expected properties\", function () {","    res.messages.forEach(function (m) {","        pm.expect(m).to.have.property('messageId').that.is.a('string');","        pm.expect(m).to.have.property('destination').that.is.a('string');","        pm.expect(m).to.have.property('status');","        pm.expect(m.status).to.include.all.keys('groupId', 'groupName', 'id', 'name', 'description');","        pm.expect(m.status.groupName).to.be.oneOf(['ACCEPTED', 'PENDING', 'UNDELIVERABLE', 'DELIVERED', 'EXPIRED', 'REJECTED']);","    });","});","","pm.test(\"Destinations in the response match the request\", function () {","    var sent = [];","    JSON.parse(pm.request.body.raw).messages.forEach(function (m) {","        m.destinations.forEach(function (d) { sent.push(d.to); });","    });","    var got = res.messages.map(function (m) { return m.destination; });","    sent.forEach(function (n) { pm.expect(got).to.include(n); });","});","","// Save ids for the scheduled-message requests","pm.environment.set(\"bulkId\", res.bulkId);","if (res.messages.length) { pm.environment.set(\"messageId\", res.messages[0].messageId); }",""],"type":"text/javascript","packages":{}}}],"id":"a9939fea-f897-4a1a-aedc-3146c319a31e","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"messages\": [\n    {\n      \"sender\": \"VHD\",\n      \"destinations\": [\n        {\n          \"messageId\": \"MESSAGE-ID-123-xyz\",\n          \"to\": \"46731234567\"\n        },\n        {\n          \"to\": \"46731234567\"\n        }\n      ],\n      \"content\": {\n        \"text\": \"Hello World\",\n        \"transliteration\": \"NONE\",\n        \"language\": {\n          \"languageCode\": \"NONE\"\n        }\n      },\n      \"options\": {\n        \"validityPeriod\": {\n          \"amount\": 12,\n          \"timeUnit\": \"HOURS\"\n        },\n        \"flash\": false,\n        \"campaignReferenceId\": \"my-campaign\"\n      },\n      \"webhooks\": {\n        \"delivery\": {\n          \"url\": \"https://www.example.com/sms/advanced\",\n          \"intermediateReport\": true,\n          \"notify\": true\n        },\n        \"contentType\": \"application/json\",\n        \"callbackData\": \"DLR callback data\"\n      }\n    }\n  ],\n  \"options\": {\n    \"includeSmsCountInResponse\": true\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/sms/3/messages","description":"<p>Send one or more SMS messages (text or binary) in a single request. This is the current version of the send API and replaces the v2 endpoints (<code>/sms/2/text/single</code>, <code>/sms/2/text/advanced</code>, <code>/sms/2/binary/advanced</code>), which remain available as legacy.</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>messages</em></td>\n<td>Array of Object</td>\n<td><strong>Required.</strong> One or more messages, sent under one bulk ID.</td>\n</tr>\n<tr>\n<td><em>options</em></td>\n<td>Object</td>\n<td>Options applied to all messages in the request.</td>\n</tr>\n</tbody>\n</table>\n</div><h6 id=\"messages\">messages[]</h6>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>sender</em></td>\n<td>String</td>\n<td>Alphanumeric or numeric sender ID.</td>\n</tr>\n<tr>\n<td><em>destinations</em></td>\n<td>Array of Object</td>\n<td><strong>Required.</strong> At least one recipient. Each has <code>to</code> (<strong>required</strong>, international format), <code>messageId</code> (your unique ID) and <code>networkId</code> (US/Canada only).</td>\n</tr>\n<tr>\n<td><em>content</em></td>\n<td>Object</td>\n<td><strong>Required.</strong> Text or binary content (see below).</td>\n</tr>\n<tr>\n<td><em>options</em></td>\n<td>Object</td>\n<td>Per-message options (see below).</td>\n</tr>\n<tr>\n<td><em>webhooks</em></td>\n<td>Object</td>\n<td>Delivery report configuration.</td>\n</tr>\n</tbody>\n</table>\n</div><h6 id=\"content-text\">content (text)</h6>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>text</em></td>\n<td>String</td>\n<td>Message body.</td>\n</tr>\n<tr>\n<td><em>transliteration</em></td>\n<td>Enum</td>\n<td><code>NONE</code>, <code>TURKISH</code>, <code>GREEK</code>, <code>CYRILLIC</code>, <code>SERBIAN_CYRILLIC</code>, <code>CENTRAL_EUROPEAN</code>, <code>BALTIC</code>, <code>NON_UNICODE</code>, <code>PORTUGUESE</code>, <code>COLOMBIAN</code>, <code>BULGARIAN_CYRILLIC</code>, <code>ALL</code>.</td>\n</tr>\n<tr>\n<td><em>language</em></td>\n<td>Object</td>\n<td><code>languageCode</code> (<code>NONE</code>, <code>TR</code>, <code>ES</code>, <code>PT</code>, <code>AUTODETECT</code>), <code>singleShift</code> (Boolean), <code>lockingShift</code> (Boolean).</td>\n</tr>\n</tbody>\n</table>\n</div><h6 id=\"content-binary\">content (binary)</h6>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>dataCoding</em></td>\n<td>Int</td>\n<td>Default <code>0</code> (GSM7); <code>8</code> for Unicode.</td>\n</tr>\n<tr>\n<td><em>esmClass</em></td>\n<td>Int</td>\n<td>Default <code>0</code>.</td>\n</tr>\n<tr>\n<td><em>hex</em></td>\n<td>String</td>\n<td>Hex bytes separated by spaces.</td>\n</tr>\n</tbody>\n</table>\n</div><h6 id=\"messagesoptions\">messages[].options</h6>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>validityPeriod</em></td>\n<td>Object</td>\n<td><code>amount</code> (<strong>required</strong>) and <code>timeUnit</code> (<code>SECONDS</code>, <code>MINUTES</code>, <code>HOURS</code>; default <code>MINUTES</code>). Maximum 48 hours.</td>\n</tr>\n<tr>\n<td><em>deliveryTimeWindow</em></td>\n<td>Object</td>\n<td><code>days</code> (<strong>required</strong>, weekday names), <code>from</code> and <code>to</code> (each with <code>hour</code> and <code>minute</code>). Times are UTC; <code>from</code> and <code>to</code> must be at least 1 hour apart.</td>\n</tr>\n<tr>\n<td><em>flash</em></td>\n<td>Boolean</td>\n<td>Send as flash SMS. Default <code>false</code>.</td>\n</tr>\n<tr>\n<td><em>campaignReferenceId</em></td>\n<td>String</td>\n<td>Campaign tracking ID.</td>\n</tr>\n<tr>\n<td><em>platform</em></td>\n<td>Object</td>\n<td><code>entityId</code>, <code>applicationId</code>.</td>\n</tr>\n<tr>\n<td><em>regional</em></td>\n<td>Object</td>\n<td><code>indiaDlt</code> (<code>principalEntityId</code> required, <code>contentTemplateId</code>, <code>telemarketerId</code>), <code>turkeyIys</code> (<code>recipientType</code> required: <code>BIREYSEL</code> or <code>TACIR</code>, <code>brandCode</code>), <code>southKorea</code> (<code>title</code>, <code>resellerCode</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><h6 id=\"messageswebhooks\">messages[].webhooks</h6>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>delivery.url</em></td>\n<td>String</td>\n<td>Delivery report callback URL.</td>\n</tr>\n<tr>\n<td><em>delivery.intermediateReport</em></td>\n<td>Boolean</td>\n<td>Receive intermediate reports in real time. Default <code>false</code>.</td>\n</tr>\n<tr>\n<td><em>delivery.notify</em></td>\n<td>Boolean</td>\n<td>If <code>false</code>, no delivery report is sent.</td>\n</tr>\n<tr>\n<td><em>contentType</em></td>\n<td>String</td>\n<td><code>application/json</code> or <code>application/xml</code>.</td>\n</tr>\n<tr>\n<td><em>callbackData</em></td>\n<td>String</td>\n<td>Up to 4000 characters, returned in the delivery report.</td>\n</tr>\n</tbody>\n</table>\n</div><h6 id=\"options-request-level\">options (request level)</h6>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>schedule.bulkId</em></td>\n<td>String</td>\n<td>Generated automatically if omitted.</td>\n</tr>\n<tr>\n<td><em>schedule.sendAt</em></td>\n<td>Date-time</td>\n<td>Format <code>yyyy-MM-dd'T'HH:mm:ss.SSSZ</code>, up to 180 days ahead.</td>\n</tr>\n<tr>\n<td><em>schedule.sendingSpeedLimit</em></td>\n<td>Object</td>\n<td><code>amount</code> (<strong>required</strong>) and <code>timeUnit</code> (<code>MINUTE</code>, <code>HOUR</code>, <code>DAY</code>; default <code>MINUTE</code>).</td>\n</tr>\n<tr>\n<td><em>tracking</em></td>\n<td>Object</td>\n<td><code>shortenUrl</code>, <code>trackClicks</code>, <code>removeProtocol</code> (Boolean), <code>trackingUrl</code>, <code>customDomain</code>.</td>\n</tr>\n<tr>\n<td><em>includeSmsCountInResponse</em></td>\n<td>Boolean</td>\n<td>Return <code>details.messageCount</code>. Not compatible with binary content.</td>\n</tr>\n<tr>\n<td><em>conversionTracking</em></td>\n<td>Object</td>\n<td><code>useConversionTracking</code> (Boolean), <code>conversionTrackingName</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>. Invalid requests return <code>400</code>, missing or invalid credentials <code>401</code>, and <code>403</code>/<code>500</code> for other errors.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>ID of the request, used to fetch delivery reports and logs.</td>\n</tr>\n<tr>\n<td><em>messages[].messageId</em></td>\n<td>String</td>\n<td>ID of the message.</td>\n</tr>\n<tr>\n<td><em>messages[].status</em></td>\n<td>Object</td>\n<td><code>groupId</code>, <code>groupName</code> (<code>ACCEPTED</code>, <code>PENDING</code>, <code>UNDELIVERABLE</code>, <code>DELIVERED</code>, <code>EXPIRED</code>, <code>REJECTED</code>), <code>id</code>, <code>name</code>, <code>description</code>, <code>action</code>.</td>\n</tr>\n<tr>\n<td><em>messages[].destination</em></td>\n<td>String</td>\n<td>Recipient.</td>\n</tr>\n<tr>\n<td><em>messages[].details.messageCount</em></td>\n<td>Int</td>\n<td>Number of message segments (when <code>includeSmsCountInResponse</code> is <code>true</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><p>Errors use a common format: <code>errorCode</code>, <code>description</code>, <code>action</code>, <code>violations[]</code> (<code>property</code>, <code>violation</code>).</p>\n","urlObject":{"protocol":"https","path":["sms","3","messages"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"e76d465b-400f-42df-86bd-2b362dbb776e","name":"Messages accepted","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"messages\": [\n    {\n      \"sender\": \"VHD\",\n      \"destinations\": [\n        {\n          \"messageId\": \"MESSAGE-ID-123-xyz\",\n          \"to\": \"46731234567\"\n        },\n        {\n          \"to\": \"46731234567\"\n        }\n      ],\n      \"content\": {\n        \"text\": \"Hello World\",\n        \"transliteration\": \"NONE\",\n        \"language\": {\n          \"languageCode\": \"NONE\"\n        }\n      },\n      \"options\": {\n        \"validityPeriod\": {\n          \"amount\": 12,\n          \"timeUnit\": \"HOURS\"\n        },\n        \"flash\": false,\n        \"campaignReferenceId\": \"my-campaign\"\n      },\n      \"webhooks\": {\n        \"delivery\": {\n          \"url\": \"https://www.example.com/sms/advanced\",\n          \"intermediateReport\": true,\n          \"notify\": true\n        },\n        \"contentType\": \"application/json\",\n        \"callbackData\": \"DLR callback data\"\n      }\n    }\n  ],\n  \"options\": {\n    \"includeSmsCountInResponse\": true\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/sms/3/messages"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"bulkId\": \"179226794527707950960824\",\n  \"messages\": [\n    {\n      \"messageId\": \"MESSAGE-ID-123-xyz\",\n      \"status\": {\n        \"groupId\": 1,\n        \"groupName\": \"PENDING\",\n        \"id\": 26,\n        \"name\": \"PENDING_ACCEPTED\",\n        \"description\": \"Message sent to next instance\"\n      },\n      \"destination\": \"46731234567\",\n      \"details\": {\n        \"messageCount\": 1\n      }\n    },\n    {\n      \"messageId\": \"179226794527707950960825\",\n      \"status\": {\n        \"groupId\": 1,\n        \"groupName\": \"PENDING\",\n        \"id\": 26,\n        \"name\": \"PENDING_ACCEPTED\",\n        \"description\": \"Message sent to next instance\"\n      },\n      \"destination\": \"46731234567\",\n      \"details\": {\n        \"messageCount\": 1\n      }\n    }\n  ]\n}"},{"id":"9ed1b85a-5a4f-4f98-9d20-63daf8a6e864","name":"Bad request - content is missing","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"messages\": [\n    {\n      \"sender\": \"VHD\",\n      \"destinations\": [\n        {\n          \"to\": \"46731234567\"\n        }\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/sms/3/messages"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E400\",\n  \"description\": \"Request cannot be processed.\",\n  \"action\": \"Check the syntax, violations and adjust the request.\",\n  \"violations\": [\n    {\n      \"property\": \"messages[0].content\",\n      \"violation\": \"must not be null\"\n    }\n  ],\n  \"resources\": []\n}"},{"id":"af4cb262-16fb-4944-9bd2-0de73450630d","name":"Unauthorized - invalid API key","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"messages\": [\n    {\n      \"sender\": \"VHD\",\n      \"destinations\": [\n        {\n          \"messageId\": \"MESSAGE-ID-123-xyz\",\n          \"to\": \"46731234567\"\n        },\n        {\n          \"to\": \"46731234567\"\n        }\n      ],\n      \"content\": {\n        \"text\": \"Hello World\",\n        \"transliteration\": \"NONE\",\n        \"language\": {\n          \"languageCode\": \"NONE\"\n        }\n      },\n      \"options\": {\n        \"validityPeriod\": {\n          \"amount\": 12,\n          \"timeUnit\": \"HOURS\"\n        },\n        \"flash\": false,\n        \"campaignReferenceId\": \"my-campaign\"\n      },\n      \"webhooks\": {\n        \"delivery\": {\n          \"url\": \"https://www.example.com/sms/advanced\",\n          \"intermediateReport\": true,\n          \"notify\": true\n        },\n        \"contentType\": \"application/json\",\n        \"callbackData\": \"DLR callback data\"\n      }\n    }\n  ],\n  \"options\": {\n    \"includeSmsCountInResponse\": true\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/sms/3/messages"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E401\",\n  \"description\": \"The request lacks valid authentication credentials for the requested resource.\",\n  \"action\": \"Check the resources and adjust authentication credentials.\",\n  \"violations\": [],\n  \"resources\": []\n}"}],"_postman_id":"a9939fea-f897-4a1a-aedc-3146c319a31e"},{"name":"Send SMS message over query parameters (API v3, latest)","event":[{"listen":"test","script":{"exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","","var res = pm.response.json();","","pm.test(\"Response has bulkId\", function () {","    pm.expect(res).to.have.property('bulkId').that.is.a('string');","});","","pm.test(\"Response contains 'messages' array\", function () {","    pm.expect(res).to.have.property('messages').that.is.an('array').with.lengthOf.at.least(1);","});","","pm.test(\"Each message has expected properties\", function () {","    res.messages.forEach(function (m) {","        pm.expect(m).to.have.property('messageId').that.is.a('string');","        pm.expect(m).to.have.property('destination').that.is.a('string');","        pm.expect(m.status).to.include.all.keys('groupId', 'groupName', 'id', 'name', 'description');","        pm.expect(m.status.groupName).to.be.oneOf(['ACCEPTED', 'PENDING', 'UNDELIVERABLE', 'DELIVERED', 'EXPIRED', 'REJECTED']);","    });","});","","pm.environment.set(\"bulkId\", res.bulkId);",""],"type":"text/javascript","packages":{}}}],"id":"4ede76ab-13bd-46f8-a642-a6eb89aa359d","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/sms/3/text/query?from=VHD&to=46731234567&text=Hello World","description":"<p>Send an SMS by passing every parameter in the query string of a <code>GET</code> request.  Use it only when sending a JSON body (<strong>Send SMS messages (API v3)</strong>) is not an option. Percent-encode special characters.</p>\n<p>Authentication is the <code>Authorization: App {{API_KEY}}</code> header.</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>to</em></td>\n<td>Array of Strings</td>\n<td><strong>Required.</strong> Recipients, in international format. Repeat the parameter or separate numbers with commas.</td>\n</tr>\n<tr>\n<td><em>text</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Message content.</td>\n</tr>\n<tr>\n<td><em>from</em></td>\n<td>String</td>\n<td>Sender ID, alphanumeric or numeric.</td>\n</tr>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>ID of a request with multiple recipients or messages. Generated automatically if omitted.</td>\n</tr>\n<tr>\n<td><em>flash</em></td>\n<td>Boolean</td>\n<td>Send as flash SMS.</td>\n</tr>\n<tr>\n<td><em>transliteration</em></td>\n<td>String</td>\n<td>Convert text from one script to another (for example <code>TURKISH</code>, <code>GREEK</code>, <code>CYRILLIC</code>).</td>\n</tr>\n<tr>\n<td><em>languageCode</em></td>\n<td>String</td>\n<td>Language character set code for the content (for example <code>TR</code>, <code>ES</code>, <code>PT</code>).</td>\n</tr>\n<tr>\n<td><em>intermediateReport</em></td>\n<td>Boolean</td>\n<td>Send real-time intermediate delivery reports to your callback server.</td>\n</tr>\n<tr>\n<td><em>notifyUrl</em></td>\n<td>String</td>\n<td>Callback URL for delivery reports.</td>\n</tr>\n<tr>\n<td><em>notifyContentType</em></td>\n<td>String</td>\n<td><code>application/json</code> or <code>application/xml</code>.</td>\n</tr>\n<tr>\n<td><em>callbackData</em></td>\n<td>String</td>\n<td>Custom data returned in delivery reports. Maximum 4000 characters.</td>\n</tr>\n<tr>\n<td><em>validityPeriod</em></td>\n<td>Int</td>\n<td>Validity in minutes. Maximum 2880 (48 hours); larger values default to 2880.</td>\n</tr>\n<tr>\n<td><em>sendAt</em></td>\n<td>Date-time</td>\n<td>Scheduled send time, format <code>yyyy-MM-dd'T'HH:mm:ss.SSSZ</code>, up to 180 days ahead.</td>\n</tr>\n<tr>\n<td><em>includeSmsCountInResponse</em></td>\n<td>Boolean</td>\n<td>Default <code>false</code>. Return the number of SMS parts.</td>\n</tr>\n<tr>\n<td><em>trackingUrl</em></td>\n<td>String</td>\n<td>Callback URL for click reports.</td>\n</tr>\n<tr>\n<td><em>trackingType</em></td>\n<td>String</td>\n<td>Custom conversion type name, for example <code>ONE_TIME_PIN</code>.</td>\n</tr>\n<tr>\n<td><em>indiaDltContentTemplateId</em></td>\n<td>String</td>\n<td>Registered DLT content template ID (India).</td>\n</tr>\n<tr>\n<td><em>indiaDltPrincipalEntityId</em></td>\n<td>String</td>\n<td>DLT entity ID (India).</td>\n</tr>\n<tr>\n<td><em>indiaDltTelemarketerId</em></td>\n<td>String</td>\n<td>Telemarketer ID (India). Required for aggregators.</td>\n</tr>\n<tr>\n<td><em>turkeyIysBrandCode</em></td>\n<td>Int</td>\n<td>Brand code (Turkey). Account default if omitted.</td>\n</tr>\n<tr>\n<td><em>turkeyIysRecipientType</em></td>\n<td>String</td>\n<td><code>TACIR</code> or <code>BIREYSEL</code> (Turkey).</td>\n</tr>\n<tr>\n<td><em>southKoreaResellerCode</em></td>\n<td>Int</td>\n<td>9-digit reseller registration number (South Korea).</td>\n</tr>\n<tr>\n<td><em>southKoreaTitle</em></td>\n<td>String</td>\n<td>Message title (South Korea).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>ID of the request, used for delivery reports and logs.</td>\n</tr>\n<tr>\n<td><em>messages[].messageId</em></td>\n<td>String</td>\n<td>ID of the message.</td>\n</tr>\n<tr>\n<td><em>messages[].status</em></td>\n<td>Object</td>\n<td><code>groupId</code>, <code>groupName</code> (<code>ACCEPTED</code>, <code>PENDING</code>, <code>UNDELIVERABLE</code>, <code>DELIVERED</code>, <code>EXPIRED</code>, <code>REJECTED</code>), <code>id</code>, <code>name</code>, <code>description</code>, <code>action</code>.</td>\n</tr>\n<tr>\n<td><em>messages[].destination</em></td>\n<td>String</td>\n<td>Recipient.</td>\n</tr>\n<tr>\n<td><em>messages[].details.messageCount</em></td>\n<td>Int</td>\n<td>Number of SMS parts.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Errors (<code>400</code>, <code>401</code>, <code>403</code>, <code>500</code>) use the common format: <code>errorCode</code>, <code>description</code>, <code>action</code>, <code>violations[]</code> (<code>property</code>, <code>violation</code>).</p>\n","urlObject":{"protocol":"https","path":["sms","3","text","query"],"host":["go2","vhdmedia","se"],"query":[{"description":{"content":"<p>Sender ID, alphanumeric or numeric.</p>\n","type":"text/plain"},"key":"from","value":"VHD"},{"description":{"content":"<p>Required. Recipient phone number(s) in international format; separate several numbers with commas.</p>\n","type":"text/plain"},"key":"to","value":"46731234567"},{"description":{"content":"<p>Required. Message content.</p>\n","type":"text/plain"},"key":"text","value":"Hello World"},{"disabled":true,"description":{"content":"<p>ID of a request with multiple recipients or messages. Generated automatically if omitted.</p>\n","type":"text/plain"},"key":"bulkId","value":"BULK-ID-123-xyz"},{"disabled":true,"description":{"content":"<p>Send as a flash SMS (true or false).</p>\n","type":"text/plain"},"key":"flash","value":"false"},{"disabled":true,"description":{"content":"<p>Convert text from one script to another, for example TURKISH, GREEK, or CYRILLIC.</p>\n","type":"text/plain"},"key":"transliteration","value":"TURKISH"},{"disabled":true,"description":{"content":"<p>Language character set code for the content, for example TR, ES, or PT.</p>\n","type":"text/plain"},"key":"languageCode","value":"TR"},{"disabled":true,"description":{"content":"<p>Receive real-time intermediate delivery reports on your callback server (true or false).</p>\n","type":"text/plain"},"key":"intermediateReport","value":"true"},{"disabled":true,"description":{"content":"<p>Callback URL for delivery reports.</p>\n","type":"text/plain"},"key":"notifyUrl","value":"https://www.example.com"},{"disabled":true,"description":{"content":"<p>Format of delivery reports: application/json or application/xml.</p>\n","type":"text/plain"},"key":"notifyContentType","value":"application/json"},{"disabled":true,"description":{"content":"<p>Custom data returned in the delivery report. Maximum 4000 characters.</p>\n","type":"text/plain"},"key":"callbackData","value":"callbackData"},{"disabled":true,"description":{"content":"<p>How long, in minutes, to keep trying to deliver. Maximum 2880 (48 hours).</p>\n","type":"text/plain"},"key":"validityPeriod","value":"720"},{"disabled":true,"description":{"content":"<p>Scheduled send time, format yyyy-MM-dd'T'HH:mm:ss.SSSZ, up to 180 days ahead.</p>\n","type":"text/plain"},"key":"sendAt","value":"2030-01-01T10:00:00.000+0000"},{"disabled":true,"description":{"content":"<p>Return the number of SMS parts in the response (true or false). Default false.</p>\n","type":"text/plain"},"key":"includeSmsCountInResponse","value":"true"},{"disabled":true,"description":{"content":"<p>Callback URL for click reports.</p>\n","type":"text/plain"},"key":"trackingUrl","value":"https://www.example.com/clicks"},{"disabled":true,"description":{"content":"<p>Custom conversion type name, for example ONE_TIME_PIN.</p>\n","type":"text/plain"},"key":"trackingType","value":"Custom tracking type"},{"disabled":true,"description":{"content":"<p>Registered DLT content template ID (India).</p>\n","type":"text/plain"},"key":"indiaDltContentTemplateId","value":"1111111111111111111"},{"disabled":true,"description":{"content":"<p>DLT entity ID (India).</p>\n","type":"text/plain"},"key":"indiaDltPrincipalEntityId","value":"1111111111111111112"},{"disabled":true,"description":{"content":"<p>Telemarketer ID (India). Required for aggregators.</p>\n","type":"text/plain"},"key":"indiaDltTelemarketerId","value":"111111111111"},{"disabled":true,"description":{"content":"<p>Brand code (Turkey). The account default is used if omitted.</p>\n","type":"text/plain"},"key":"turkeyIysBrandCode","value":"1234"},{"disabled":true,"description":{"content":"<p>Recipient type (Turkey): TACIR or BIREYSEL.</p>\n","type":"text/plain"},"key":"turkeyIysRecipientType","value":"BIREYSEL"},{"disabled":true,"description":{"content":"<p>9-digit reseller registration number (South Korea).</p>\n","type":"text/plain"},"key":"southKoreaResellerCode","value":"123456789"},{"disabled":true,"description":{"content":"<p>Message title (South Korea).</p>\n","type":"text/plain"},"key":"southKoreaTitle","value":"Title"}],"variable":[]}},"response":[{"id":"e5dfe630-8998-4826-8521-f25712851c88","name":"Message accepted","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/sms/3/text/query?from=VHD&to=46731234567&text=Hello World","protocol":"https","host":["go2","vhdmedia","se"],"path":["sms","3","text","query"],"query":[{"key":"from","value":"VHD"},{"key":"to","value":"46731234567"},{"key":"text","value":"Hello World"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"bulkId\": \"179226794633707950445696\",\n  \"messages\": [\n    {\n      \"messageId\": \"179226794633707950445697\",\n      \"status\": {\n        \"groupId\": 1,\n        \"groupName\": \"PENDING\",\n        \"id\": 26,\n        \"name\": \"PENDING_ACCEPTED\",\n        \"description\": \"Message sent to next instance\"\n      },\n      \"destination\": \"46731234567\"\n    }\n  ]\n}"},{"id":"b88765d0-043b-4aa0-a283-1dab2c45bb88","name":"Bad request - recipient is missing","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/sms/3/text/query?from=VHD&text=Hello World","protocol":"https","host":["go2","vhdmedia","se"],"path":["sms","3","text","query"],"query":[{"key":"from","value":"VHD"},{"key":"text","value":"Hello World"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E400\",\n  \"description\": \"Request cannot be processed.\",\n  \"action\": \"Check the syntax, violations and adjust the request.\",\n  \"violations\": [\n    {\n      \"property\": \"to\",\n      \"violation\": \"must not be empty\"\n    }\n  ],\n  \"resources\": []\n}"},{"id":"49c86dea-75c8-48d6-af04-543b7f75a481","name":"Unauthorized - invalid API key","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/sms/3/text/query?from=VHD&to=46731234567&text=Hello World","protocol":"https","host":["go2","vhdmedia","se"],"path":["sms","3","text","query"],"query":[{"key":"from","value":"VHD"},{"key":"to","value":"46731234567"},{"key":"text","value":"Hello World"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E401\",\n  \"description\": \"The request lacks valid authentication credentials for the requested resource.\",\n  \"action\": \"Check the resources and adjust authentication credentials.\",\n  \"violations\": [],\n  \"resources\": []\n}"}],"_postman_id":"4ede76ab-13bd-46f8-a642-a6eb89aa359d"},{"name":"Preview SMS message","event":[{"listen":"test","script":{"exec":["// Get the text from the request body","var requestBody = pm.request.body;","var text = requestBody.raw;","","// Remove leading and trailing whitespaces","text = text.trim();","","// Calculate the character count","var characterCount = text.length;","","// Calculate the number of messages","var messageCount = Math.ceil(characterCount / 160);","","// Calculate remaining characters after last complete message","var remainingCharacters = 160 - (characterCount % 160);","","// Test for status code 200","pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});","","// Validate the calculated values","pm.test(\"Number of characters: \" + characterCount, function () {","    pm.expect(characterCount).to.eql(176); // Replace with the expected character count","});","","pm.test(\"Number of messages: \" + messageCount, function () {","    pm.expect(messageCount).to.eql(2); // Replace with the expected message count","});","","pm.test(\"Remaining characters after last complete message: \" + remainingCharacters, function () {","    pm.expect(remainingCharacters).to.eql(144); // Replace with the expected remaining characters","});",""],"type":"text/javascript","packages":{}}}],"id":"24abc146-18f3-473e-b122-03bb0d90fa4b","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"text\": \" Let's see how many characters remain unused in this message.Let's see how many characters remain unused in this message.Let's see.1111111111111111111111111111 \"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/sms/1/preview","description":"<p>Check how a message will be sent before you send it: how many characters remain, how many message parts it will use, and how transliteration and language settings change the text. Nothing is sent and nothing is charged.</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>text</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Content of the message to preview.</td>\n</tr>\n<tr>\n<td><em>languageCode</em></td>\n<td>String</td>\n<td>Language character set code to preview with: <code>TR</code>, <code>ES</code>, <code>PT</code>, <code>AUTODETECT</code>, or <code>NONE</code>.</td>\n</tr>\n<tr>\n<td><em>transliteration</em></td>\n<td>String</td>\n<td>Transliteration to preview with, for example <code>TURKISH</code>, <code>GREEK</code>, <code>CYRILLIC</code>, <code>CENTRAL_EUROPEAN</code>, <code>BALTIC</code>, <code>PORTUGUESE</code>, <code>COLOMBIAN</code>, <code>NON_UNICODE</code>, <code>ALL</code>, or <code>NONE</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>. It contains one preview for the message as written, plus one for each configuration you supplied (language and/or transliteration).</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>originalText</em></td>\n<td>String</td>\n<td>The text you sent.</td>\n</tr>\n<tr>\n<td><em>previews</em></td>\n<td>Array of Object</td>\n<td>One entry per configuration.</td>\n</tr>\n<tr>\n<td><em>previews[].textPreview</em></td>\n<td>String</td>\n<td>The text as it would be sent with this configuration.</td>\n</tr>\n<tr>\n<td><em>previews[].messageCount</em></td>\n<td>Int</td>\n<td>Number of message parts the text will use.</td>\n</tr>\n<tr>\n<td><em>previews[].charactersRemaining</em></td>\n<td>Int</td>\n<td>Characters left in the last message part.</td>\n</tr>\n<tr>\n<td><em>previews[].configuration</em></td>\n<td>Object</td>\n<td>The <code>language</code> and/or <code>transliteration</code> settings applied. Empty for the original text.</td>\n</tr>\n</tbody>\n</table>\n</div><p>If you call the method without authorization, you receive <code>401 Unauthorized</code>.</p>\n","urlObject":{"protocol":"https","path":["sms","1","preview"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"f0fb020c-4ce8-4df2-a8e1-35eef90fb7ff","name":"Preview response","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"text\": \"Let's see how many characters remain unused in this message.\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/sms/1/preview"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"vary","value":"Origin"},{"key":"vary","value":"Access-Control-Request-Method"},{"key":"vary","value":"Access-Control-Request-Headers"},{"key":"content-type","value":"application/json;charset=UTF-8"},{"key":"content-length","value":"233"},{"key":"x-http2-stream-id","value":"2483"},{"key":"server","value":"SMS API"},{"key":"x-request-id","value":"1705582076633221663"},{"key":"strict-transport-security","value":"max-age=31536000; includeSubDomains; preload;"},{"key":"connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"originalText\": \"Let's see how many characters remain unused in this message.\",\n    \"previews\": [\n        {\n            \"textPreview\": \"Let's see how many characters remain unused in this message.\",\n            \"messageCount\": 1,\n            \"charactersRemaining\": 100,\n            \"configuration\": {}\n        }\n    ]\n}"}],"_postman_id":"24abc146-18f3-473e-b122-03bb0d90fa4b"},{"name":"Send SMS message (API v2)","event":[{"listen":"prerequest","script":{"exec":["// Get the current date and time","var now = new Date();","","// Add 1 hour to the current time","var sendAtTime = new Date(now.getTime() + (1 * 60 * 60 * 1000));","","// Format the date and time as required","var year = sendAtTime.getUTCFullYear();","var month = ('0' + (sendAtTime.getUTCMonth() + 1)).slice(-2);","var day = ('0' + sendAtTime.getUTCDate()).slice(-2);","var hours = ('0' + sendAtTime.getUTCHours()).slice(-2);","var minutes = ('0' + sendAtTime.getUTCMinutes()).slice(-2);","var seconds = ('0' + sendAtTime.getUTCSeconds()).slice(-2);","","// Construct the formatted string for sendAt","var sendAt = year + '-' + month + '-' + day + 'T' + hours + ':' + minutes + ':' + seconds + '.000+0000';","","// Set the dynamic sendAt value as an environment variable","pm.environment.set(\"sendAt\", sendAt);","","// Function to generate a random string of given length","function generateRandomString(length) {","    var result = '';","    var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';","    var charactersLength = characters.length;","    for (var i = 0; i < length; i++) {","        result += characters.charAt(Math.floor(Math.random() * charactersLength));","    }","    return result;","}","","// Generate a random string of length 9 (same length as the placeholder 123-xyz-123)","var randomString = generateRandomString(9);","","// Set the dynamic bulkId value as an environment variable","pm.environment.set(\"bulkId\", \"BULK-ID-\" + randomString);","// Set the dynamic messageId value as an environment variable","pm.environment.set(\"messageId\", \"MESSAGE-ID-\" + randomString);"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Test if response status code is 200","pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});","","// Parse response body as JSON","var responseBody = pm.response.json();","","// Parse the request body","var requestBody = pm.request.body;","","// Extract the 'from', 'to', and 'text' properties from the request body","var from, toNumbers, text;","try {","    var bodyJson = JSON.parse(requestBody);","    var messages = bodyJson.messages;","    from = messages[0].from;","    toNumbers = messages.flatMap(message => message.destinations.map(destination => destination.to));","    text = messages[1].text;","} catch (error) {","    console.log(\"Error parsing request body as JSON:\", error);","}","","// Test if 'from' property exists in the request body","pm.test(\"From property exists in the request body\", function () {","    pm.expect(from).to.exist;","});","","// Test if 'from' property is a string","pm.test(\"From property is a string\", function () {","    pm.expect(from).to.be.a('string');","});","","// Test if 'to' property exists in the request body","pm.test(\"To property exists in the request body\", function () {","    pm.expect(toNumbers).to.exist;","});","","// Test if 'to' property is an array","pm.test(\"To property is an array\", function () {","    pm.expect(toNumbers).to.be.an('array');","});","","// Test if 'to' array has at least one element","pm.test(\"To array has at least one element\", function () {","    pm.expect(toNumbers).to.have.lengthOf.at.least(1);","});","","// Test if 'text' property exists in the request body","pm.test(\"Text property exists in the request body\", function () {","    pm.expect(text).to.exist;","});","","// Test if 'text' property is a string","pm.test(\"Text property is a string\", function () {","    pm.expect(text).to.be.a('string');","});","","// Test if response contains 'messages' array","pm.test(\"Response contains 'messages' array\", function () {","    pm.expect(responseBody).to.have.property('messages').that.is.an('array');","});","","// Test if each message in the 'messages' array contains the expected properties","pm.test(\"Each message contains expected properties\", function () {","    responseBody.messages.forEach(function(message, index) {","        pm.expect(message).to.have.property('messageId');","        pm.expect(message).to.have.property('status');","        pm.expect(message.status).to.have.property('description');","        pm.expect(message.status).to.have.property('groupId');","        pm.expect(message.status).to.have.property('groupName');","        pm.expect(message.status).to.have.property('id');","        pm.expect(message.status).to.have.property('name');","","        // Check if 'text' property exists in the message","        if ('text' in message) {","            // Calculate the number of SMS messages required based on the character count of the text","            var textLength = message.text.length;","            var smsCount = Math.ceil(textLength / 160); // Assuming 160 characters per SMS","","            // Assert the smsCount property","            pm.expect(message).to.have.property('smsCount', smsCount);","        } else {","            console.log(\"text property not found in message:\", message);","        }","","        // Check if 'to' property exists in the message","        if ('to' in message) {","            // Expect the 'to' property to be equal to the extracted 'to' number","            pm.expect(message.to).to.eql(toNumbers[index]);","        } else {","            console.log(\"to property not found in message:\", message);","        }","    });","});","","// The API returns a bulkId only when the request has several recipients or sends its own bulkId.","pm.test(\"BulkId is returned when expected\", function () {","    var sent = {};","    try { sent = JSON.parse(pm.variables.replaceIn(pm.request.body.raw)); } catch (error) { console.log(\"Could not read the request body:\", error); }","    var recipients = 0;","    if (Array.isArray(sent.to)) { recipients = sent.to.length; } else if (sent.to) { recipients = 1; }","    (sent.messages || []).forEach(function (m) {","        recipients += (m.destinations || []).length || (Array.isArray(m.to) ? m.to.length : (m.to ? 1 : 0));","    });","    if (sent.bulkId || recipients > 1) {","        pm.expect(responseBody).to.have.property('bulkId');","    }","});","",""],"type":"text/javascript","packages":{}}}],"id":"10158f4b-95fb-4ce1-912b-4bc908734a7f","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n\n  \"bulkId\": \"{{bulkId}}\",\n  \"messages\": [\n\n    {\n\n      \"callbackData\": \"DLR callback data\",\n\n      \"destinations\": [\n\n        {\n\n          \"messageId\": \"{{messageId}}\",\n\n          \"to\": \"46731234567\"\n\n        },\n\n        {\n\n          \"to\": \"46731234567\"\n\n        }\n\n      ],\n\n      \"flash\": false,\n\n      \"from\": \"VHD\",\n\n      \"intermediateReport\": true,\n\n      \"language\": {\n\n        \"languageCode\": \"TR\"\n\n      },\n\n      \"notifyContentType\": \"application/json\",\n\n      \"notifyUrl\": \"https://www.example.com/sms/advanced\",\n\n      \"text\": \"Merhaba dünya\",\n\n      \"transliteration\": \"TURKISH\",\n\n      \"validityPeriod\": 720\n\n    },\n\n    {\n\n      \"deliveryTimeWindow\": {\n\n        \"days\": [\n\n          \"MONDAY\",\n\n          \"TUESDAY\",\n\n          \"WEDNESDAY\",\n\n          \"THURSDAY\",\n\n          \"FRIDAY\",\n\n          \"SATURDAY\",\n\n          \"SUNDAY\"\n\n        ],\n\n        \"from\": {\n\n          \"hour\": 6,\n\n          \"minute\": 0\n\n        },\n\n        \"to\": {\n\n          \"hour\": 15,\n\n          \"minute\": 30\n\n        }\n\n      },\n\n      \"destinations\": [\n\n        {\n\n          \"to\": \"46731234567\"\n\n        }\n\n      ],\n\n      \"from\": \"4670123456\",\n\n      \"sendAt\": \"{{sendAt}}\",\n\n      \"text\": \"Hello World\"\n\n    }\n\n  ],\n\n  \"tracking\": {\n\n    \"track\": \"SMS\",\n\n    \"type\": \"MY_CAMPAIGN\"\n\n  }\n\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/sms/2/text/advanced","description":"<blockquote>\n<p><strong>Legacy (v2).</strong> This endpoint is still available, but new integrations should use <strong>Send SMS message (v3)</strong> (<code>POST /sms/3/messages</code>).</p>\n</blockquote>\n<p>Send advanced SMS with all available features and parameters.</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"bulkId\": \" \",\n  \"messages\": [{},], \n  \"sendingSpeedLimit\":{},\n  \"urlOptions\":{},\n  \"tracking\": {},\n  \"includeSmsCountInResponse\": boolean\n}\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>Unique ID assigned to the request if messaging multiple recipients or sending multiple messages via a single API request. If not provided, it will be auto-generated and returned in the API response. Typically, used to fetch delivery reports and message logs.</td>\n</tr>\n<tr>\n<td><em>messages</em></td>\n<td>Array of Objects</td>\n<td>Required  <br />  <br />Array of sent message objects, one object per every message.</td>\n</tr>\n<tr>\n<td>sendingSpeedLimit</td>\n<td>Object</td>\n<td>Limits the send speed when sending messages in bulk to deliver messages over a longer period of time. You may wish to use this to allow your systems or agents to handle large amounts of incoming traffic, e.g., if you are expecting recipients to follow through with a call-to-action option from a message you sent. Not setting a send speed limit can overwhelm your resources with incoming traffic.</td>\n</tr>\n<tr>\n<td>urlOptions</td>\n<td>Object</td>\n<td>Sets up URL shortening and tracking feature. Not compatible with old tracking feature.</td>\n</tr>\n<tr>\n<td>tracking</td>\n<td>Object</td>\n<td>Sets up tracking parameters to track conversion metrics and type.</td>\n</tr>\n<tr>\n<td>includeSmsCountInResponse</td>\n<td>boolean</td>\n<td>Default: false  <br />Set to true to return smsCount in the response. Default is false. smsCount is the total count of SMS submitted in the request. SMS messages have a character limit and messages longer than that limit will be split into multiple SMS and reflected in the total count of SMS submitted.</td>\n</tr>\n</tbody>\n</table>\n</div><h6 id=\"messages-array-of-objects\">Messages [Array of Objects]</h6>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">\"messages\": [ {\n      \"callbackData\": \" \",\n      \"deliveryTimeWindow\": { },\n      \"destinations\": [ {}, ],\n      \"flash\":  ,\n      \"from\": \"\",\n      \"intermediateReport\": ,\n      \"language\": { },\n      \"notifyContentType\": \"\",\n      \"notifyUrl\": \"\",\n      \"regional\": { },\n      \"sendAt\": \"\"\n      \"text\": \"\",\n      \"transliteration\": \"\",\n      \"validityPeriod\": ,\n      \"entityId\": \"\",\n      \"applicationId\": \"\"\n }]\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>callbackData</td>\n<td>String</td>\n<td>Additional client's data that will be sent on the notifyUrl. The maximum value is 200 characters</td>\n</tr>\n<tr>\n<td>deliveryTimeWindow</td>\n<td>Object</td>\n<td>When there are restrictions on when messages can be sent, a specific SMS delivery window is often set, outside of which messages will not be delivered.</td>\n</tr>\n<tr>\n<td>destinations</td>\n<td>Array of Object</td>\n<td>Required.  <br />  <br />An array of destination objects for where messages are being sent.</td>\n</tr>\n<tr>\n<td>flash</td>\n<td>Boolean</td>\n<td>Default: false  <br />  <br />To enable a flash SMS, set the value to true, allowing it to appear automatically on the recipient's device without any interaction. Alternatively, leave the value as false to send a standard SMS</td>\n</tr>\n<tr>\n<td>from</td>\n<td>String</td>\n<td>Represents a sender ID which can be alphanumeric or numeric. Alphanumeric sender ID length should be between 3 and 11 characters (Example: CompanyName). Numeric sender ID length should be between 3 and 14 characters.</td>\n</tr>\n<tr>\n<td>intermediateReport</td>\n<td>Boolean</td>\n<td>The real-time Intermediate delivery report that will be sent on your callback server. Can be true or false</td>\n</tr>\n<tr>\n<td>language</td>\n<td>Object</td>\n<td></td>\n</tr>\n<tr>\n<td>notifyContentType</td>\n<td>String</td>\n<td>Preferred Delivery report content type. Can be application/json or application/xml</td>\n</tr>\n<tr>\n<td>notifyUrl</td>\n<td>String</td>\n<td>The URL on your callback server on which the Delivery reports will be sent.</td>\n</tr>\n<tr>\n<td>regional</td>\n<td>Object</td>\n<td>Region-specific parameters, often imposed by local laws. Use this, if country or region that you are sending an SMS to requires additional information.</td>\n</tr>\n<tr>\n<td>sendAT</td>\n<td>String</td>\n<td>Date and time when the message is to be sent. Used for scheduled SMS (SMS not sent immediately, but at scheduled time).</td>\n</tr>\n<tr>\n<td>text</td>\n<td>String</td>\n<td>Text of the message that will be sent.</td>\n</tr>\n<tr>\n<td>transliteration</td>\n<td>String</td>\n<td>Conversion of a message text from one script to another.  <br />Possible values: \"TURKISH\", \"GREEK\", \"CYRILLIC\", \"CENTRAL_EUROPEAN\" and \"NON_UNICODE\".</td>\n</tr>\n<tr>\n<td>validityPeriod</td>\n<td>integer</td>\n<td>The message validity period in minutes. When the period expires, it will not be allowed for the message to be sent. Validity period longer than 48h is not supported (in this case, it will be automatically set to 48h).</td>\n</tr>\n<tr>\n<td>entityId</td>\n<td>string [ 0 .. 50 ] characters</td>\n<td>Required for entity use in a send request for outbound traffic. Returned in notification events.</td>\n</tr>\n<tr>\n<td>applicationId</td>\n<td>string [ 0 .. 50 ] characters</td>\n<td>Required for application use in a send request for outbound traffic. Returned in notification events.</td>\n</tr>\n</tbody>\n</table>\n</div><p>deliveryTimeWindow {Object}</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">\"deliveryTimeWindow\": {\n        \"days\": [\"string\",\"string\"],\n        \"from\": {},\n        \"to\": {}\n      },\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>days</td>\n<td>Array of String</td>\n<td>Required  <br />  <br />Items Enum: \"MONDAY\" \"TUESDAY\" \"WEDNESDAY\" \"THURSDAY\" \"FRIDAY\" \"SATURDAY\" \"SUNDAY\"  <br />Days of the week which are included in the delivery time window. At least one day must be provided. Separate multiple days with a comma.</td>\n</tr>\n<tr>\n<td>from</td>\n<td>Object</td>\n<td>The exact time of day to start sending messages. Time is expressed in the UTC time zone. If set, use it together with the to property with minimum 1 hour difference.</td>\n</tr>\n<tr>\n<td>to</td>\n<td>Object</td>\n<td>The exact time of day to end sending messages. Time is expressed in the UTC time zone. If set, use it together with the from property with minimum 1 hour difference.</td>\n</tr>\n</tbody>\n</table>\n</div><p>from {object}, to {object}</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">        \"from\": {\n          \"hour\": integer,\n          \"minute\": integer\n        },\n        \"to\": {\n          \"hour\": integer,\n          \"minute\": integer\n        }\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>hour</em></td>\n<td>Integer</td>\n<td>Required  <br />  <br />[ 0 .. 23 ]. Hour when the time window opens when used in the from property or closes when used in the to property.</td>\n</tr>\n<tr>\n<td>minute</td>\n<td>Integer</td>\n<td>Required  <br />  <br />[ 0 .. 59 ]. Minute when the time window opens when used in the from property or closes when used in the to property.</td>\n</tr>\n</tbody>\n</table>\n</div><p>destinations {Object}</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">\"destinations\": [\n        {\n          \"messageId\": \"string\",\n          \"to\": \"string\"\n        },\n ]\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>messageId</td>\n<td>String</td>\n<td>The ID that uniquely identifies the message sent.</td>\n</tr>\n<tr>\n<td>to</td>\n<td>String</td>\n<td>Required  <br />  <br />[ 0 .. 50 ] characters  <br />Message destination address. Addresses must be in international format (Example: 46731234567).</td>\n</tr>\n</tbody>\n</table>\n</div><p>language {Object}</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\"> \"language\": {\n        \"languageCode\": \"string\"\n      },\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>languageCode</td>\n<td>String</td>\n<td>Code for language character set of a message text.  <br />Possible values: TR for Turkish, ES for Spanish and PT for Portuguese.</td>\n</tr>\n</tbody>\n</table>\n</div><p>regional {Object}</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\"> \"regional\": {\n        \"indiaDlt\": {},\n         \"turkeyIys\": {},\n         \"southKorea\": {},\n      },\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>indiaDlt</td>\n<td>Object</td>\n<td>Distributed Ledger Technology (DLT) specific parameters required for sending SMS to phone numbers registered in India.</td>\n</tr>\n<tr>\n<td>turkeyIys</td>\n<td>Object</td>\n<td>YS regulations specific parameters required for sending promotional SMS to phone numbers registered in Turkey.</td>\n</tr>\n<tr>\n<td>southKorea</td>\n<td>Object</td>\n<td>Use case dependent parameters for sending SMS to phone numbers registered in South Korea.</td>\n</tr>\n</tbody>\n</table>\n</div><p>indiaDlt {Object}</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">\"indiaDlt\": {\n        \"contentTemplateId\": \"string\",\n         \"principalEntityId\": \"string\"\n      },\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>contentTemplateId</td>\n<td>String</td>\n<td>Registered DLT content template ID which matches message you are sending.</td>\n</tr>\n<tr>\n<td>principalEntityId</td>\n<td>String</td>\n<td>Required.  <br />  <br />Your assigned DLT principal entity ID.</td>\n</tr>\n</tbody>\n</table>\n</div><p>turkeyIys {Object}</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">\"turkeyIys\": {\n        \"contentTemplateId\": \"string\",\n         \"principalEntityId\": \"string\"\n      },\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>brandCode</td>\n<td>integer</td>\n<td>Brand code is an ID of the company based on a company VAT number. If not provided in request, default value is used from your VHD account.</td>\n</tr>\n<tr>\n<td>recipientType</td>\n<td>String</td>\n<td>Required.  <br />  <br />Enum: \"BIREYSEL\" \"TACIR\"  <br />Recipient Type must be TACIR or BIREYSEL.</td>\n</tr>\n</tbody>\n</table>\n</div><p>southKorea {Object}</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">\"southKorea\": {\n        \"resellerCode\": \"integer\"\n      }\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>resellerCode</td>\n<td>integer</td>\n<td>Reseller identification code: 9-digit registration number in the business registration certificate for South Korea. Resellers should submit this when sending.</td>\n</tr>\n</tbody>\n</table>\n</div><p>sendingSpeedLimit {Object}</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\"> \"sendingSpeedLimit\": {\n    \"amount\": int&lt;32&gt;,\n    \"timeUnit\": \"string\"\n  }\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>amount</em></td>\n<td>integer</td>\n<td>The number of messages to be sent per timeUnit. By default, the system sends messages as fast as the infrastructure allows. Use this parameter to adapt sending capacity to your needs. The system is only able to work against its maximum capacity for ambitious message batches.</td>\n</tr>\n<tr>\n<td>timeUnit</td>\n<td>string</td>\n<td>Default: \"MINUTE\"  <br />Enum: \"MINUTE\" \"HOUR\" \"DAY\"  <br />The time unit to define when setting a messaging speed limit. Defaults to MINUTE.</td>\n</tr>\n</tbody>\n</table>\n</div><p>urlOptions {Object}</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\"> \"urlOptions\": {\n    \"shortenUrl\": boolean,\n    \"trackClicks\": boolean,\n    \"trackingUrl\": \"string\",\n    \"removeProtocol\":boolean\n  }\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>shortenUrl</td>\n<td>boolean</td>\n<td>Default: true  <br />Enable shortening of the URLs within a message. Set this to true, if you want to set up other URL options.</td>\n</tr>\n<tr>\n<td>trackClicks</td>\n<td>boolean</td>\n<td>Default: true  <br />Enable tracking of short URL clicks within a message: which URL was clicked, how many times, and by whom.</td>\n</tr>\n<tr>\n<td>trackingUrl</td>\n<td>string</td>\n<td>The URL of your callback server on to which the Click report will be sent</td>\n</tr>\n<tr>\n<td>removeProtocol</td>\n<td>boolean</td>\n<td>Default: false  <br />Remove a protocol, such as https://, from links to shorten a message. Note that some mobiles may not recognize such links as a URL</td>\n</tr>\n</tbody>\n</table>\n</div><p>tracking {Object}</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\"> \"tracking\": {\n    \"baseUrl\":\"string\",\n    \"track\": \"string\",\n    \"type\": \"string\",\n    \"processKey\": \"string\"\n  }\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>baseUrl</td>\n<td>string</td>\n<td>Custom base URL for shortened links in messages when tracking URL conversions. Legacy - use urlOptions instead.</td>\n</tr>\n<tr>\n<td><em>track</em></td>\n<td>String</td>\n<td>Indicates if the message has to be tracked for Conversion rates. Possible values: SMS and URL</td>\n</tr>\n<tr>\n<td>type</td>\n<td>String</td>\n<td>User defined type of the Conversion tracking process or flow type or message type, etc. Example: ONE_TIME_PIN or SOCIAL_INVITES.</td>\n</tr>\n<tr>\n<td>processKey</td>\n<td>String</td>\n<td>Key that uniquely identifies Conversion tracking process.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>If successful, response header HTTP status code will be <code>200 OK</code> and the message will be sent. If you try to send the message without authorization, you will receive an <code>401 Unauthorized</code> error.</p>\n<h5 id=\"smsresponse\">SMSResponse</h5>\n<h3 id=\"smsresponsedetails\">SMSResponseDetails</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>to</em></td>\n<td>String</td>\n<td>The message destination address.</td>\n</tr>\n<tr>\n<td><em>status</em></td>\n<td>Status</td>\n<td>Indicates whether the message is sent successfully, not sent, delivered, not delivered, waiting for delivery or any other possible status.</td>\n</tr>\n<tr>\n<td><em>smsCount</em></td>\n<td>Int</td>\n<td>The number of sent message segments. This value is not returned for scheduled messages.</td>\n</tr>\n<tr>\n<td><em>messageId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the sent message.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"status\">Status</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>groupId</em></td>\n<td>Int</td>\n<td>Status group ID.</td>\n</tr>\n<tr>\n<td><em>groupName</em></td>\n<td>String</td>\n<td>Status group name.</td>\n</tr>\n<tr>\n<td><em>id</em></td>\n<td>Int</td>\n<td>Status ID.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>Status name.</td>\n</tr>\n<tr>\n<td><em>description</em></td>\n<td>String</td>\n<td>Human readable description of the status.</td>\n</tr>\n<tr>\n<td><em>action</em></td>\n<td>String</td>\n<td>Action that should be taken to eliminate the error.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["sms","2","text","advanced"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"04bed39c-4747-4be6-9631-fb82e45b950d","name":"Fully featured textual message example 1","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n\n  \"bulkId\": \"BULK-ID-123-xyz\",\n\n  \"messages\": [\n\n    {\n\n      \"callbackData\": \"DLR callback data\",\n\n      \"destinations\": [\n\n        {\n\n          \"messageId\": \"MESSAGE-ID-123-xyz\",\n\n          \"to\": \"4670123456\"\n\n        },\n\n        {\n\n          \"to\": \"4670123457\"\n\n        }\n\n      ],\n\n      \"flash\": false,\n\n      \"from\": \"VHD\",\n\n      \"intermediateReport\": true,\n\n      \"language\": {\n\n        \"languageCode\": \"TR\"\n\n      },\n\n      \"notifyContentType\": \"application/json\",\n\n      \"notifyUrl\": \"https://www.example.com/sms/advanced\",\n\n      \"text\": \"Merhaba dünya\",\n\n      \"transliteration\": \"TURKISH\",\n\n      \"validityPeriod\": 720\n\n    },\n\n    {\n\n      \"deliveryTimeWindow\": {\n\n        \"days\": [\n\n          \"MONDAY\",\n\n          \"TUESDAY\",\n\n          \"WEDNESDAY\",\n\n          \"THURSDAY\",\n\n          \"FRIDAY\",\n\n          \"SATURDAY\",\n\n          \"SUNDAY\"\n\n        ],\n\n        \"from\": {\n\n          \"hour\": 6,\n\n          \"minute\": 0\n\n        },\n\n        \"to\": {\n\n          \"hour\": 15,\n\n          \"minute\": 30\n\n        }\n\n      },\n\n      \"destinations\": [\n\n        {\n\n          \"to\": \"4670123458\"\n\n        }\n\n      ],\n\n      \"from\": \"4670123456\",\n\n      \"sendAt\": \"2021-08-25T16:00:00.000+0000\",\n\n      \"text\": \"Hello World\"\n\n    }\n\n  ],\n\n  \"tracking\": {\n\n    \"track\": \"SMS\",\n\n    \"type\": \"MY_CAMPAIGN\"\n\n  }\n\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/sms/2/text/advanced","protocol":"https","host":["go2","vhdmedia","se"],"path":["sms","2","text","advanced"],"query":[{"key":"bulkId","value":"string","description":"The ID which uniquely identifies the request. Bulk ID will be received only when you send a message to more than one destination address.","disabled":true},{"key":"from","value":"string","description":"Represents a sender ID which can be alphanumeric or numeric. Alphanumeric sender ID length should be between 3 and 11 characters (Example: CompanyName). Numeric sender ID length should be between 3 and 14 characters.","disabled":true},{"key":"to","value":"string","description":"Required. Message destination address. Addresses must be in international format (Example: 41793026727).","disabled":true},{"key":"messageId","value":"string","description":"The ID that uniquely identifies the message sent.","disabled":true},{"key":"text","value":"string ","description":"Required. Text of the message that will be sent.","disabled":true},{"key":"flash","value":"boolean","description":"Can be true or false. If the value is set to true, a flash SMS will be sent. Otherwise, a normal SMS will be sent. The default value is false.","disabled":true},{"key":"transileration","value":"string","description":"Conversion of a message text from one script to another.\nPossible values: \"TURKISH\", \"GREEK\", \"CYRILLIC\", \"CENTRAL_EUROPEAN\" and \"NON_UNICODE\".","disabled":true},{"key":"languageCode","value":"string","description":"Code for language character set of a message text.\nPossible values: TR for Turkish, ES for Spanish and PT for Portuguese.","disabled":true},{"key":"intermediateReport","value":"boolean","description":"The real-time Intermediate delivery report that will be sent on your callback server. Can be true or false.","disabled":true},{"key":"notifyUrl","value":"string","description":"The URL on your callback server on which the Delivery reports will be sent.","disabled":true},{"key":"notifyContentType","value":"string","description":"Preferred Delivery report content type. Can be application/json or application/xml.","disabled":true},{"key":"callbackData","value":"string","description":"Additional client's data that will be sent on the notifyUrl. The maximum value is 200 characters.","disabled":true},{"key":"validityPeriod","value":"int32","description":"The message validity period in minutes. When the period expires, it will not be allowed for the message to be sent. Validity period longer than 48h is not supported (in this case, it will be automatically set to 48h).","disabled":true},{"key":"sendAT","value":"date","description":"Date and time when the message is to be sent. Used for scheduled SMS (SMS not sent immediately, but at scheduled time).","disabled":true},{"key":"hour","value":"int32","description":"Hour when the time window opens when used in from property or closes when used in to property.","disabled":true},{"key":"minute","value":"int32","description":"Minute when the time window opens when used in from property or closes when used in to property.","disabled":true},{"key":"days","value":"array of strings ","description":"Days which are included in the delivery time window. Values are: MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY. At least one day must be stated.","disabled":true},{"key":"track","value":"string","description":"Indicates if the message has to be tracked for Conversion rates.\nPossible values: SMS and URL","disabled":true},{"key":"processKey","value":"string","description":"Key that uniquely identifies Conversion tracking process.","disabled":true},{"key":"type","value":"string ","description":"User defined type of the Conversion tracking process or flow type or message type, etc. Example: ONE_TIME_PIN or SOCIAL_INVITES.","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"614"},{"key":"Date","value":"Thu, 09 Mar 2023 21:14:29 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1678396470120660227"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"bulkId\": \"BULK-ID-123-xyz\",\n    \"messages\": [\n        {\n            \"to\": \"4670123456\",\n            \"status\": {\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 7,\n                \"name\": \"PENDING_ENROUTE\",\n                \"description\": \"Message sent to next instance\"\n            },\n            \"messageId\": \"37839647015934994017\",\n            \"smsCount\": 1\n        },\n        {\n            \"to\": \"4670123457\",\n            \"status\": {\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 7,\n                \"name\": \"PENDING_ENROUTE\",\n                \"description\": \"Message sent to next instance\"\n            },\n            \"messageId\": \"37839647015934994018\",\n            \"smsCount\": 1\n        },\n        {\n            \"to\": \"4670123458\",\n            \"status\": {\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 7,\n                \"name\": \"PENDING_ENROUTE\",\n                \"description\": \"Message sent to next instance\"\n            },\n            \"messageId\": \"MESSAGE-ID-123-xyz\",\n            \"smsCount\": 1\n        }\n    ]\n}"},{"id":"5737e002-cff1-4c64-ad95-3c756f02b9e9","name":"Fully featured textual message example 2","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n\n  \"bulkId\": \"BULK-ID-123-xyz\",\n\n  \"messages\": [\n\n    {\n\n      \"callbackData\": \"DLR callback data\",\n\n      \"destinations\": [\n\n        {\n\n          \"messageId\": \"MESSAGE-ID-123-xyz\",\n\n          \"to\": \"4670123456\"\n\n        },\n\n        {\n\n          \"to\": \"4670123457\"\n\n        }\n\n      ],\n\n      \"flash\": false,\n\n      \"from\": \"VHD\",\n\n      \"intermediateReport\": true,\n\n      \"language\": {\n\n        \"languageCode\": \"TR\"\n\n      },\n\n      \"notifyContentType\": \"application/json\",\n\n      \"notifyUrl\": \"https://www.example.com/sms/advanced\",\n\n      \"text\": \"Merhaba dünya\",\n\n      \"transliteration\": \"TURKISH\",\n\n      \"validityPeriod\": 720\n\n    },\n\n    {\n\n      \"deliveryTimeWindow\": {\n\n        \"days\": [\n\n          \"MONDAY\",\n\n          \"TUESDAY\",\n\n          \"WEDNESDAY\",\n\n          \"THURSDAY\",\n\n          \"FRIDAY\",\n\n          \"SATURDAY\",\n\n          \"SUNDAY\"\n\n        ],\n\n        \"from\": {\n\n          \"hour\": 6,\n\n          \"minute\": 0\n\n        },\n\n        \"to\": {\n\n          \"hour\": 15,\n\n          \"minute\": 30\n\n        }\n\n      },\n\n      \"destinations\": [\n\n        {\n\n          \"to\": \"4670123458\"\n\n        }\n\n      ],\n\n      \"from\": \"4670123456\",\n\n   \n\n      \"text\": \"To find out more on messaging go to https://www.vhdmedia.se/tjanster/\"\n   \n\n    }\n\n  ],\n\n\n  \"sendingSpeedLimit\": {\n    \"amount\": 1,\n    \"timeUnit\": \"minute\"\n  },\n\n  \"urlOptions\": {\n    \"shortenUrl\": true,\n    \"trackClicks\": true,\n    \"trackingUrl\": \"https://mybrand.com/track-url-clicks-webhook\",\n    \"removeProtocol\":true\n    \n  },\n  \"includeSmsCountInResponse\": true\n\n\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/sms/2/text/advanced"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"content-type","value":"application/json;charset=UTF-8"},{"key":"content-length","value":"623"},{"key":"x-http2-stream-id","value":"4041"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1683196074663422836"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"bulkId\": \"BULK-ID-123-xyz\",\n    \"messages\": [\n        {\n            \"messageId\": \"MESSAGE-ID-123-xyz\",\n            \"status\": {\n                \"description\": \"Message sent to next instance\",\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 26,\n                \"name\": \"PENDING_ACCEPTED\"\n            },\n            \"to\": \"4670123456\",\n            \"smsCount\": 1\n        },\n        {\n            \"messageId\": \"3831960746854335621918\",\n            \"status\": {\n                \"description\": \"Message sent to next instance\",\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 26,\n                \"name\": \"PENDING_ACCEPTED\"\n            },\n            \"to\": \"4670123457\",\n            \"smsCount\": 1\n        },\n        {\n            \"messageId\": \"3831960746854335621919\",\n            \"status\": {\n                \"description\": \"Message sent to next instance\",\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 26,\n                \"name\": \"PENDING_ACCEPTED\"\n            },\n            \"to\": \"4670123458\",\n            \"smsCount\": 1\n        }\n    ]\n}"},{"id":"fd9bc44c-ca6d-4422-9011-19d9f4151059","name":"Fully featured textual message Scheduled SMS","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"bulkId\": \"BULK-ID-VHD\",\n  \"messages\": [\n    {\n      \"callbackData\": \"DLR callback data\",\n      \"destinations\": [\n        {\n          \"messageId\": \"MESSAGE-ID-123-xyz\",\n          \"to\": \"41793026727\"\n        },\n        {\n          \"to\": \"41793026834\"\n        }\n      ],\n      \"flash\": false,\n      \"from\": \"VHD\",\n      \"intermediateReport\": true,\n      \"language\": {\n        \"languageCode\": \"TR\"\n      },\n      \"notifyContentType\": \"application/json\",\n      \"notifyUrl\": \"https://www.example.com/sms/advanced\",\n      \"text\": \"Artık Ulusal Dil Tanımlayıcısı ile Türkçe karakterli smslerinizi rahatlıkla iletebilirsiniz.\",\n      \"transliteration\": \"TURKISH\",\n      \"validityPeriod\": 720\n    },\n    {\n      \"deliveryTimeWindow\": {\n        \"days\": [\n          \"MONDAY\",\n          \"TUESDAY\",\n          \"WEDNESDAY\",\n          \"THURSDAY\",\n          \"FRIDAY\",\n          \"SATURDAY\",\n          \"SUNDAY\"\n        ],\n        \"from\": {\n          \"hour\": 6,\n          \"minute\": 0\n        },\n        \"to\": {\n          \"hour\": 15,\n          \"minute\": 30\n        }\n      },\n      \"destinations\": [\n        {\n          \"to\": \"41793026700\"\n        }\n      ],\n      \"from\": \"41793026700\",\n      \"sendAt\": \"2024-03-02T09:34:00.000+0000\",\n      \"text\": \"A long time ago, in a galaxy far, far away... It is a period of civil war. Rebel spaceships, striking from a hidden base, have won their first victory against the evil Galactic Empire.\"\n    }\n  ],\n  \"tracking\": {\n    \"track\": \"SMS\",\n    \"type\": \"MY_CAMPAIGN\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/sms/2/text/advanced"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"vary","value":"Origin"},{"key":"vary","value":"Access-Control-Request-Method"},{"key":"vary","value":"Access-Control-Request-Headers"},{"key":"content-type","value":"application/json;charset=UTF-8"},{"key":"content-length","value":"582"},{"key":"x-http2-stream-id","value":"3681"},{"key":"server","value":"SMS API"},{"key":"x-request-id","value":"1709286347846241830"},{"key":"strict-transport-security","value":"max-age=31536000; includeSubDomains; preload;"},{"key":"connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"bulkId\": \"BULK-ID-VHD\",\n    \"messages\": [\n        {\n            \"messageId\": \"MESSAGE-ID-123-xyz\",\n            \"status\": {\n                \"description\": \"Message sent to next instance\",\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 26,\n                \"name\": \"PENDING_ACCEPTED\"\n            },\n            \"to\": \"41793026727\"\n        },\n        {\n            \"messageId\": \"4092863478724335888340\",\n            \"status\": {\n                \"description\": \"Message sent to next instance\",\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 26,\n                \"name\": \"PENDING_ACCEPTED\"\n            },\n            \"to\": \"41793026834\"\n        },\n        {\n            \"messageId\": \"4092863478724335888341\",\n            \"status\": {\n                \"description\": \"Message sent to next instance\",\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 26,\n                \"name\": \"PENDING_ACCEPTED\"\n            },\n            \"to\": \"41793026700\"\n        }\n    ]\n}"},{"id":"659e5779-959a-478c-993e-c23c3db84fbf","name":"Simple message","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"messages\": [\n    {\n      \"destinations\": [\n        {\n          \"to\": \"4670123456\"\n        },\n        {\n          \"to\": \"4670123457\"\n        }\n      ],\n      \"from\": \"vhd\",\n      \"text\": \"Hello World\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/sms/2/text/advanced","protocol":"https","host":["go2","vhdmedia","se"],"path":["sms","2","text","advanced"],"query":[{"key":"bulkId","value":"string","description":"The ID which uniquely identifies the request. Bulk ID will be received only when you send a message to more than one destination address.","disabled":true},{"key":"from","value":"string","description":"Represents a sender ID which can be alphanumeric or numeric. Alphanumeric sender ID length should be between 3 and 11 characters (Example: CompanyName). Numeric sender ID length should be between 3 and 14 characters.","disabled":true},{"key":"to","value":"string","description":"Required. Message destination address. Addresses must be in international format (Example: 41793026727).","disabled":true},{"key":"messageId","value":"string","description":"The ID that uniquely identifies the message sent.","disabled":true},{"key":"text","value":"string ","description":"Required. Text of the message that will be sent.","disabled":true},{"key":"flash","value":"boolean","description":"Can be true or false. If the value is set to true, a flash SMS will be sent. Otherwise, a normal SMS will be sent. The default value is false.","disabled":true},{"key":"transileration","value":"string","description":"Conversion of a message text from one script to another.\nPossible values: \"TURKISH\", \"GREEK\", \"CYRILLIC\", \"CENTRAL_EUROPEAN\" and \"NON_UNICODE\".","disabled":true},{"key":"languageCode","value":"string","description":"Code for language character set of a message text.\nPossible values: TR for Turkish, ES for Spanish and PT for Portuguese.","disabled":true},{"key":"intermediateReport","value":"boolean","description":"The real-time Intermediate delivery report that will be sent on your callback server. Can be true or false.","disabled":true},{"key":"notifyUrl","value":"string","description":"The URL on your callback server on which the Delivery reports will be sent.","disabled":true},{"key":"notifyContentType","value":"string","description":"Preferred Delivery report content type. Can be application/json or application/xml.","disabled":true},{"key":"callbackData","value":"string","description":"Additional client's data that will be sent on the notifyUrl. The maximum value is 200 characters.","disabled":true},{"key":"validityPeriod","value":"int32","description":"The message validity period in minutes. When the period expires, it will not be allowed for the message to be sent. Validity period longer than 48h is not supported (in this case, it will be automatically set to 48h).","disabled":true},{"key":"sendAT","value":"date","description":"Date and time when the message is to be sent. Used for scheduled SMS (SMS not sent immediately, but at scheduled time).","disabled":true},{"key":"hour","value":"int32","description":"Hour when the time window opens when used in from property or closes when used in to property.","disabled":true},{"key":"minute","value":"int32","description":"Minute when the time window opens when used in from property or closes when used in to property.","disabled":true},{"key":"days","value":"array of strings ","description":"Days which are included in the delivery time window. Values are: MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY. At least one day must be stated.","disabled":true},{"key":"track","value":"string","description":"Indicates if the message has to be tracked for Conversion rates.\nPossible values: SMS and URL","disabled":true},{"key":"processKey","value":"string","description":"Key that uniquely identifies Conversion tracking process.","disabled":true},{"key":"type","value":"string ","description":"User defined type of the Conversion tracking process or flow type or message type, etc. Example: ONE_TIME_PIN or SOCIAL_INVITES.","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"429"},{"key":"Date","value":"Thu, 09 Mar 2023 21:09:58 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1678396198909008663"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"bulkId\": \"37839619891537213988\",\n    \"messages\": [\n        {\n            \"to\": \"4670123456\",\n            \"status\": {\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 7,\n                \"name\": \"PENDING_ENROUTE\",\n                \"description\": \"Message sent to next instance\"\n            },\n            \"messageId\": \"37839619891537213990\",\n            \"smsCount\": 1\n        },\n        {\n            \"to\": \"4670123457\",\n            \"status\": {\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 7,\n                \"name\": \"PENDING_ENROUTE\",\n                \"description\": \"Message sent to next instance\"\n            },\n            \"messageId\": \"37839619891537213989\",\n            \"smsCount\": 1\n        }\n    ]\n}"},{"id":"d8a1475e-f87f-45ec-ba4e-78b4d43f5696","name":"ShortenUrl default","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n\n  \"messages\": [\n\n    {\n\n\n      \"destinations\": [\n\n        {\n\n          \"to\": \"4670123456\"\n\n        }\n\n      ],\n\n      \"text\": \"To find out more on messaging go to https://www.vhdmedia.se\"\n\n    }\n\n  ],\n\n \"urlOptions\": {\n    \"shortenUrl\": true\n  }\n\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/sms/2/text/advanced"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"207"},{"key":"Date","value":"Wed, 03 May 2023 14:14:22 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1683123262879801836"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"messages\": [\n        {\n            \"to\": \"4670123456\",\n            \"status\": {\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 7,\n                \"name\": \"PENDING_ENROUTE\",\n                \"description\": \"Message sent to next instance\"\n            },\n            \"messageId\": \"38312326290133825258\",\n            \"smsCount\": 1\n        }\n    ]\n}"}],"_postman_id":"10158f4b-95fb-4ce1-912b-4bc908734a7f"},{"name":"Send binary SMS message (API v2)","event":[{"listen":"test","script":{"exec":["// Test if response status code is 200","pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});","","// Parse response body as JSON","var responseBody = pm.response.json();","","// Extract 'to' numbers from the request body","var toNumbersInRequest = [];","try {","    var requestBodyJson = pm.request.json();","    requestBodyJson.messages.forEach(function(message) {","        message.destinations.forEach(function(destination) {","            // Log the 'to' number being extracted","            console.log(\"Extracted 'to' number:\", destination.to);","            toNumbersInRequest.push(destination.to);","        });","    });","    // Log the extracted 'to' numbers for debugging","    console.log(\"To Numbers in Request:\", toNumbersInRequest);","} catch (error) {","    console.log(\"Error parsing request body as JSON:\", error);","}","","// Test if response contains 'messages' array","pm.test(\"Response contains 'messages' array\", function () {","    pm.expect(responseBody).to.have.property('messages').that.is.an('array');","});","","// Test if each message in the 'messages' array contains the expected properties","pm.test(\"Each message contains expected properties\", function () {","    responseBody.messages.forEach(function(message, index) {","        pm.expect(message).to.have.property('messageId');","        pm.expect(message).to.have.property('status');","        pm.expect(message.status).to.have.property('description');","        pm.expect(message.status).to.have.property('groupId');","        pm.expect(message.status).to.have.property('groupName');","        pm.expect(message.status).to.have.property('id');","        pm.expect(message.status).to.have.property('name');","","        // Check if 'text' property exists in the message","        if ('text' in message) {","            // Calculate the number of SMS messages required based on the character count of the text","            var textLength = message.text.length;","            var smsCount = Math.ceil(textLength / 160); // Assuming 160 characters per SMS","","            // Assert the smsCount property","            pm.expect(message).to.have.property('smsCount', smsCount);","        } else {","            console.log(\"text property not found in message:\", message);","        }","","        // Check if 'to' property exists in the message","        if ('to' in message) {","            // Check if index is within bounds of toNumbersInRequest array","            if (index < toNumbersInRequest.length) {","                // Expect the 'to' property to be equal to the extracted 'to' number","                pm.expect(message.to).to.eql(toNumbersInRequest[index]);","            } else {","                console.log(\"Index out of bounds for toNumbersInRequest array\");","            }","        } else {","            console.log(\"to property not found in message:\", message);","        }","    });","});","","// The API returns a bulkId only when the request has several recipients or sends its own bulkId.","pm.test(\"BulkId is returned when expected\", function () {","    var sent = {};","    try { sent = JSON.parse(pm.variables.replaceIn(pm.request.body.raw)); } catch (error) { console.log(\"Could not read the request body:\", error); }","    var recipients = 0;","    if (Array.isArray(sent.to)) { recipients = sent.to.length; } else if (sent.to) { recipients = 1; }","    (sent.messages || []).forEach(function (m) {","        recipients += (m.destinations || []).length || (Array.isArray(m.to) ? m.to.length : (m.to ? 1 : 0));","    });","    if (sent.bulkId || recipients > 1) {","        pm.expect(responseBody).to.have.property('bulkId');","    }","});"],"type":"text/javascript","packages":{}}}],"id":"7800885b-2bec-46bf-b27d-863e4bb8a95b","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"bulkId\": \"BULK-ID-123-xyz\",\n  \"messages\": [\n    {\n      \"binary\": {\n        \"dataCoding\": 0,\n        \"esmClass\": 0,\n        \"hex\": \"54 65 73 74 20 6d 65 73 73 61 67 65 2e\"\n      },\n      \"callbackData\": \"DLR callback data\",\n      \"destinations\": [\n        {\n          \"messageId\": \"MESSAGE-ID-123-xyz\",\n          \"to\": \"46731234567\"\n        },\n        {\n          \"to\": \"46731234567\"\n        }\n      ],\n      \"flash\": true,\n      \"from\": \"VHD\",\n      \"intermediateReport\": true,\n      \"notifyContentType\": \"application/json\",\n      \"notifyUrl\": \"https://www.example.com/sms/advanced\",\n      \"validityPeriod\": 720\n    },\n    {\n      \"binary\": {\n        \"dataCoding\": 0,\n        \"esmClass\": 0,\n        \"hex\": \"41 20 6C 6F 6E 67 20 74 …20 45 6D 70 69 72 65 2E\"\n      },\n      \"deliveryTimeWindow\": {\n        \"days\": [\n          \"MONDAY\",\n          \"TUESDAY\",\n          \"WEDNESDAY\",\n          \"THURSDAY\",\n          \"FRIDAY\",\n          \"SATURDAY\",\n          \"SUNDAY\"\n        ],\n        \"from\": {\n          \"hour\": 6,\n          \"minute\": 0\n        },\n        \"to\": {\n          \"hour\": 15,\n          \"minute\": 30\n        }\n      },\n      \"destinations\": [\n        {\n          \"to\": \"46731234567\"\n        }\n      ],\n      \"from\": \"41793026727\",\n      \"sendAt\": \"2021-08-25T16:00:00.000+0000\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/sms/2/binary/advanced","description":"<blockquote>\n<p><strong>Legacy (v2).</strong> This endpoint is still available, but new integrations should use <strong>Send SMS message (v3)</strong> (<code>POST /sms/3/messages</code>).</p>\n</blockquote>\n<p>Send single or multiple binary messages to one or more destination address.</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"bulkId\": \" \",\n  \"messages\": [{},]\n}\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>Required  <br />  <br />When sending multiple messages or messaging multiple recipients through a single API request, a distinct identifier is assigned to the request. If this identifier is not provided, it will be automatically generated and returned as part of the API response. This identifier is usually used to retrieve delivery reports and message logs.</td>\n</tr>\n<tr>\n<td><em>messages</em>  <br /></td>\n<td>Array of Objects</td>\n<td>Required  <br />  <br />Array of sent message objects, one object per every message.</td>\n</tr>\n</tbody>\n</table>\n</div><h6 id=\"messages-array-of-objects\">Messages [Array of Objects]</h6>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">\"messages\": [{\n      \"binary\": {},\n      \"callbackData\": \"\",\n      \"destinations\": [ {},],\n      \"flash\": ,\n      \"from\": \"\",\n      \"intermediateReport\": ,\n      \"notifyContentType\": \"\",\n      \"notifyUrl\": \"\",\n      \"validityPeriod\": ,\n      \"deliveryTimeWindow\": {},\n      \"sendAt\": \"\"\n }]\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>binary</td>\n<td>Object</td>\n<td></td>\n</tr>\n<tr>\n<td>callbackData  <br /></td>\n<td>String</td>\n<td>Additional client's data that will be sent on the notifyUrl. The maximum value is 200 characters</td>\n</tr>\n<tr>\n<td>destinations</td>\n<td>Array of Object</td>\n<td>Required.  <br />  <br />An array of destination objects for where messages are being sent.</td>\n</tr>\n<tr>\n<td>flash</td>\n<td>Boolean</td>\n<td>Default: false  <br />  <br />To enable a flash SMS, set the value to true, allowing it to appear automatically on the recipient's device without any interaction. Alternatively, leave the value as false to send a standard SMS</td>\n</tr>\n<tr>\n<td>from</td>\n<td>String</td>\n<td>Represents a sender ID which can be alphanumeric or numeric. Alphanumeric sender ID length should be between 3 and 11 characters (Example: CompanyName). Numeric sender ID length should be between 3 and 14 characters.</td>\n</tr>\n<tr>\n<td>intermediateReport</td>\n<td>Boolean</td>\n<td>The real-time Intermediate delivery report that will be sent on your callback server. Can be true or false</td>\n</tr>\n<tr>\n<td>notifyContentType</td>\n<td>String</td>\n<td>Preferred Delivery report content type. Can be application/json or application/xml</td>\n</tr>\n<tr>\n<td>notifyUrl</td>\n<td>String</td>\n<td>The URL on your callback server on which the Delivery reports will be sent.</td>\n</tr>\n<tr>\n<td>validityPeriod</td>\n<td>Integer32</td>\n<td>The message validity period in minutes. When the period expires, it will not be allowed for the message to be sent. Validity period longer than 48h is not supported (in this case, it will be automatically set to 48h).</td>\n</tr>\n<tr>\n<td>deliveryTimeWindow</td>\n<td>Object</td>\n<td>When there are restrictions on when messages can be sent, a specific SMS delivery window is often set, outside of which messages will not be delivered.</td>\n</tr>\n<tr>\n<td>sendAT</td>\n<td>String</td>\n<td>Date and time when the message is to be sent. Used for scheduled SMS (SMS not sent immediately, but at scheduled time).</td>\n</tr>\n</tbody>\n</table>\n</div><p>binary {Object}</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">\"binary\": {\n        \"dataCoding\": ,\n        \"esmClass\": ,\n        \"hex\": \"\"\n      }\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>dataCoding</td>\n<td>Integer</td>\n<td>Binary content data coding. The default value is (0) for GSM7. Example: (8) for Unicode data.</td>\n</tr>\n<tr>\n<td>esmClass</td>\n<td>Integer</td>\n<td>“Esm_class” parameter. Indicate special message attributes associated with the SMS. Default value is (0).</td>\n</tr>\n<tr>\n<td>hex</td>\n<td>string</td>\n<td>Hexadecimal string. This is the representation of your binary data. Two hex digits represent one byte. They should be separated by the space character (Example: 0f c2 4a bf 34 13 ba).</td>\n</tr>\n</tbody>\n</table>\n</div><p>destinations {Object}</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">\"destinations\": [\n        {\n          \"messageId\": \"string\",\n          \"to\": \"string\"\n        },\n ]\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>messageId  <br /></td>\n<td>String</td>\n<td>The ID that uniquely identifies the message sent.</td>\n</tr>\n<tr>\n<td>to</td>\n<td>String</td>\n<td>Required  <br />  <br />[ 0 .. 50 ] characters  <br />Message destination address. Addresses must be in international format (Example: 46731234567).</td>\n</tr>\n</tbody>\n</table>\n</div><p>deliveryTimeWindow {Object}</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">\"deliveryTimeWindow\": {\n        \"days\": [\"string\",\"string\"],\n        \"from\": {},\n        \"to\": {}\n      },\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>days  <br /></td>\n<td>Array of String</td>\n<td>Required  <br />  <br />Items Enum: \"MONDAY\" \"TUESDAY\" \"WEDNESDAY\" \"THURSDAY\" \"FRIDAY\" \"SATURDAY\" \"SUNDAY\"  <br />Days of the week which are included in the delivery time window. At least one day must be provided. Separate multiple days with a comma.</td>\n</tr>\n<tr>\n<td>from</td>\n<td>Object</td>\n<td>The exact time of day to start sending messages. Time is expressed in the UTC time zone. If set, use it together with the to property with minimum 1 hour difference.</td>\n</tr>\n<tr>\n<td>to</td>\n<td>Object</td>\n<td>The exact time of day to end sending messages. Time is expressed in the UTC time zone. If set, use it together with the from property with minimum 1 hour difference.</td>\n</tr>\n</tbody>\n</table>\n</div><p>from {object}, to {object}</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">        \"from\": {\n          \"hour\": integer,\n          \"minute\": integer\n        },\n        \"to\": {\n          \"hour\": integer,\n          \"minute\": integer\n        }\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>hour</em></td>\n<td>Integer</td>\n<td>Required  <br />  <br />[ 0 .. 23 ]. Hour when the time window opens when used in the from property or closes when used in the to property.</td>\n</tr>\n<tr>\n<td>minute  <br /></td>\n<td>Integer</td>\n<td>Required  <br />  <br />[ 0 .. 59 ]. Minute when the time window opens when used in the from property or closes when used in the to property.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>If successful, response header HTTP status code will be <code>200 OK</code> and the message will be sent. If you try to send the message without authorization, you will receive an <code>401 Unauthorized</code> error.</p>\n<h5 id=\"smsresponse\">SMSResponse</h5>\n<h3 id=\"smsresponsedetails\">SMSResponseDetails</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>to</em></td>\n<td>String</td>\n<td>The message destination address.</td>\n</tr>\n<tr>\n<td><em>status</em></td>\n<td>Status</td>\n<td>Indicates whether the message is sent successfully, not sent, delivered, not delivered, waiting for delivery or any other possible status.</td>\n</tr>\n<tr>\n<td><em>smsCount</em></td>\n<td>Int</td>\n<td>The number of sent message segments. This value is not returned for scheduled messages.</td>\n</tr>\n<tr>\n<td><em>messageId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the sent message.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"status\">Status</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>groupId</em></td>\n<td>Int</td>\n<td>Status group ID.</td>\n</tr>\n<tr>\n<td><em>groupName</em></td>\n<td>String</td>\n<td>Status group name.</td>\n</tr>\n<tr>\n<td><em>id</em></td>\n<td>Int</td>\n<td>Status ID.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>Status name.</td>\n</tr>\n<tr>\n<td><em>description</em></td>\n<td>String</td>\n<td>Human readable description of the status.</td>\n</tr>\n<tr>\n<td><em>action</em></td>\n<td>String</td>\n<td>Action that should be taken to eliminate the error.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["sms","2","binary","advanced"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"a4ab29f2-1f61-4f36-a6b5-51a87cbf165b","name":"Send fully feaured binary message","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"bulkId\": \"BULK-ID-123-xyz\",\n  \"messages\": [\n    {\n      \"binary\": {\n        \"dataCoding\": 0,\n        \"esmClass\": 0,\n        \"hex\": \"54 65 73 74 20 6d 65 73 73 61 67 65 2e\"\n      },\n      \"callbackData\": \"DLR callback data\",\n      \"destinations\": [\n        {\n          \"messageId\": \"MESSAGE-ID-123-xyz\",\n          \"to\": \"4670123457\"\n        },\n        {\n          \"to\": \"4670123458\"\n        }\n      ],\n      \"flash\": true,\n      \"from\": \"VHD\",\n      \"intermediateReport\": true,\n      \"notifyContentType\": \"application/json\",\n      \"notifyUrl\": \"https://www.example.com/sms/advanced\",\n      \"validityPeriod\": 720\n    },\n    {\n      \"binary\": {\n        \"dataCoding\": 0,\n        \"esmClass\": 0,\n        \"hex\": \"41 20 6C 6F 6E 67 20 74 …20 45 6D 70 69 72 65 2E\"\n      },\n      \"deliveryTimeWindow\": {\n        \"days\": [\n          \"MONDAY\",\n          \"TUESDAY\",\n          \"WEDNESDAY\",\n          \"THURSDAY\",\n          \"FRIDAY\",\n          \"SATURDAY\",\n          \"SUNDAY\"\n        ],\n        \"from\": {\n          \"hour\": 6,\n          \"minute\": 0\n        },\n        \"to\": {\n          \"hour\": 15,\n          \"minute\": 30\n        }\n      },\n      \"destinations\": [\n        {\n          \"to\": \"4670123459\"\n        }\n      ],\n      \"from\": \"4670123456\",\n      \"sendAt\": \"2021-08-25T16:00:00.000+0000\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/sms/1/binary/advanced"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"615"},{"key":"Date","value":"Sat, 11 Mar 2023 09:57:24 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1678528645251120830"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"bulkId\": \"BULK-ID-123-xyz\",\n    \"messages\": [\n        {\n            \"to\": \"4670123457\",\n            \"status\": {\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 7,\n                \"name\": \"PENDING_ENROUTE\",\n                \"description\": \"Message sent to next instance\"\n            },\n            \"messageId\": \"37852864526237213687\",\n            \"smsCount\": 1\n        },\n        {\n            \"to\": \"4670123458\",\n            \"status\": {\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 7,\n                \"name\": \"PENDING_ENROUTE\",\n                \"description\": \"Message sent to next instance\"\n            },\n            \"messageId\": \"37852864526237213688\",\n            \"smsCount\": 1\n        },\n        {\n            \"to\": \"4670123459\",\n            \"status\": {\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 7,\n                \"name\": \"PENDING_ENROUTE\",\n                \"description\": \"Message sent to next instance\"\n            },\n            \"messageId\": \"MESSAGE-ID-123-xyz\",\n            \"smsCount\": 1\n        }\n    ]\n}"},{"id":"7873236c-b087-4f42-9855-287e9c32b3e4","name":"Unicode flash binary SMS","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"messages\": [\n    {\n      \"binary\": {\n        \"dataCoding\": 8,\n        \"esmClass\": 0,\n        \"hex\": \"0048 0065 006c 006c 006f 0020 0077 006f 0072 006c 0064 002c 0020 039a 03b1 03bb 03b7 03bc 03ad 03c1 03b1 0020 03ba 03cc 03c3 03bc 03b5 002c 0020 30b3 30f3 30cb 30c1 30cf\"\n      },\n      \"destinations\": [\n        {\n          \"to\": \"4670123456\"\n        }\n      ],\n      \"flash\": true,\n      \"from\": \"VHD\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/sms/1/binary/advanced"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"206"},{"key":"Date","value":"Sat, 11 Mar 2023 10:52:49 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1678531969979179227"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"messages\": [\n        {\n            \"to\": \"4670123456\",\n            \"status\": {\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 7,\n                \"name\": \"PENDING_ENROUTE\",\n                \"description\": \"Message sent to next instance\"\n            },\n            \"messageId\": \"37853196998703536443\",\n            \"smsCount\": 1\n        }\n    ]\n}"}],"_postman_id":"7800885b-2bec-46bf-b27d-863e4bb8a95b"},{"name":"Send simple SMS message (API v2)","event":[{"listen":"test","script":{"exec":["// Test if response status code is 200","pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});","","// Parse response body as JSON","var responseBody = pm.response.json();","","// Parse the request body","var requestBody = pm.request.body;","","// Extract the 'from', 'to', and 'text' properties from the request body","var from, toNumbers, text;","try {","    var bodyJson = JSON.parse(requestBody.raw);","    from = bodyJson.from;","    toNumbers = bodyJson.to;","    text = bodyJson.text;","} catch (error) {","    console.log(\"Error parsing request body as JSON:\", error);","}","","// Test if 'from' property exists in the request body","pm.test(\"From property exists in the request body\", function () {","    pm.expect(from).to.exist;","});","","// Test if 'from' property is a string","pm.test(\"From property is a string\", function () {","    pm.expect(from).to.be.a('string');","});","","// Test if 'to' property exists in the request body","pm.test(\"To property exists in the request body\", function () {","    pm.expect(toNumbers).to.exist;","});","","// Test if 'to' property is an array","pm.test(\"To property is an array\", function () {","    pm.expect(toNumbers).to.be.an('array');","});","","// Test if 'to' array has at least one element","pm.test(\"To array has at least one element\", function () {","    pm.expect(toNumbers).to.have.lengthOf.at.least(1);","});","","// Test if 'text' property exists in the request body","pm.test(\"Text property exists in the request body\", function () {","    pm.expect(text).to.exist;","});","","// Test if 'text' property is a string","pm.test(\"Text property is a string\", function () {","    pm.expect(text).to.be.a('string');","});","","// Extract 'to' numbers from the request body","var toNumbersInRequest = [];","try {","    var requestBodyJson = pm.request.json();","    requestBodyJson.to.forEach(function(toNumber) {","        // Log the 'to' number being extracted","        console.log(\"Extracted 'to' number:\", toNumber);","        toNumbersInRequest.push(toNumber);","    });","    // Log the extracted 'to' numbers for debugging","    console.log(\"To Numbers in Request:\", toNumbersInRequest);","} catch (error) {","    console.log(\"Error parsing request body as JSON:\", error);","}","","// Test if response contains 'messages' array","pm.test(\"Response contains 'messages' array\", function () {","    pm.expect(responseBody).to.have.property('messages').that.is.an('array');","});","","// Test if each message in the 'messages' array contains the expected properties","pm.test(\"Each message contains expected properties\", function () {","    responseBody.messages.forEach(function(message, index) {","        pm.expect(message).to.have.property('messageId');","        pm.expect(message).to.have.property('status');","        pm.expect(message.status).to.have.property('description');","        pm.expect(message.status).to.have.property('groupId');","        pm.expect(message.status).to.have.property('groupName');","        pm.expect(message.status).to.have.property('id');","        pm.expect(message.status).to.have.property('name');","","        // Check if 'text' property exists in the message","        if ('text' in message) {","            // Calculate the number of SMS messages required based on the character count of the text","            var textLength = message.text.length;","            var smsCount = Math.ceil(textLength / 160); // Assuming 160 characters per SMS","","            // Assert the smsCount property","            pm.expect(message).to.have.property('smsCount', smsCount);","        } else {","            console.log(\"text property not found in message:\", message);","        }","","        // Check if 'to' property exists in the message","        if ('to' in message) {","            // Check if index is within bounds of toNumbersInRequest array","            if (index < toNumbersInRequest.length) {","                // Expect the 'to' property to be equal to the extracted 'to' number","                pm.expect(message.to).to.eql(toNumbersInRequest[index]);","            } else {","                console.log(\"Index out of bounds for toNumbersInRequest array\");","            }","        } else {","            console.log(\"to property not found in message:\", message);","        }","    });","});","","// The API returns a bulkId only when the request has several recipients or sends its own bulkId.","pm.test(\"BulkId is returned when expected\", function () {","    var sent = {};","    try { sent = JSON.parse(pm.variables.replaceIn(pm.request.body.raw)); } catch (error) { console.log(\"Could not read the request body:\", error); }","    var recipients = 0;","    if (Array.isArray(sent.to)) { recipients = sent.to.length; } else if (sent.to) { recipients = 1; }","    (sent.messages || []).forEach(function (m) {","        recipients += (m.destinations || []).length || (Array.isArray(m.to) ? m.to.length : (m.to ? 1 : 0));","    });","    if (sent.bulkId || recipients > 1) {","        pm.expect(responseBody).to.have.property('bulkId');","    }","});","",""],"type":"text/javascript","packages":{}}},{"listen":"prerequest","script":{"exec":[""],"type":"text/javascript","packages":{}}}],"id":"c655b813-4874-4a06-9415-c68cbd2a9142","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"from\": \"VHD\",\n    \"to\":   [\"46731234567\"],\n    \"text\": \"Hello World\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/sms/2/text/single","description":"<blockquote>\n<p><strong>Legacy (v2).</strong> This endpoint is still available, but new integrations should use <strong>Send SMS message (v3)</strong> (<code>POST /sms/3/messages</code>).</p>\n</blockquote>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>from</em></td>\n<td>String</td>\n<td>Represents sender ID and it can be alphanumeric or numeric. Alphanumeric sender ID length should be between 3 and 11 characters (Example: CompanyName). Numeric sender ID length should be between 3 and 14 characters.</td>\n</tr>\n<tr>\n<td><em>to</em>  <br /></td>\n<td>Array of Strings</td>\n<td>Required  <br />  <br />Array of message destination addresses. If you want to send a message to one destination, a single String is supported instead of an Array. Destination addresses must be in international format (Example: 46731234567).</td>\n</tr>\n<tr>\n<td>text  <br />  <br /></td>\n<td>String</td>\n<td>Required  <br />  <br />Text of the message that will be sent.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success, response header HTTP status code will be 200 OK and the message will be sent.<br />If you try to send message without authorization, you will receive an error 401 Unauthorized.</p>\n<h5 id=\"smsresponse\">SMSResponse</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the request. Bulk ID will be generated only when you send a message to more than one destination address.</td>\n</tr>\n<tr>\n<td><em>messages</em></td>\n<td>Array of Object</td>\n<td>Array of sent message objects, one object per every message.</td>\n</tr>\n</tbody>\n</table>\n</div><h6 id=\"messages-array-of-object-\">Messages (Array of Object )</h6>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>to</em></td>\n<td>String</td>\n<td>The message destination address.</td>\n</tr>\n<tr>\n<td><em>status</em></td>\n<td>Object</td>\n<td>Indicates whether the message is successfully sent, not sent, delivered, not delivered, waiting for delivery or any other possible status.</td>\n</tr>\n<tr>\n<td><em>smsCount</em></td>\n<td>Int</td>\n<td>The number of sent message segments.</td>\n</tr>\n<tr>\n<td><em>messageId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the message sent.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"status-object\">Status (Object)</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>groupId</em></td>\n<td>Int</td>\n<td>Status group ID.</td>\n</tr>\n<tr>\n<td><em>groupName</em></td>\n<td>String</td>\n<td>Status group name.</td>\n</tr>\n<tr>\n<td><em>id</em></td>\n<td>Int</td>\n<td>Status ID.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>Status name.</td>\n</tr>\n<tr>\n<td><em>description</em></td>\n<td>String</td>\n<td>Human readable description of the status.</td>\n</tr>\n<tr>\n<td><em>action</em></td>\n<td>String</td>\n<td>Action that should be taken to eliminate the error.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["sms","2","text","single"],"host":["go2","vhdmedia","se"],"query":[{"disabled":true,"key":"","value":""}],"variable":[]}},"response":[{"id":"cf07a854-2d16-44ec-b256-4fee2837cb0e","name":"Sending multiple messages","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"from\": \"VHD\",\n    \"to\":   [\"4670123456\",\"4670123457\"],\n    \"text\": \"Hello World\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/sms/2/text/single","protocol":"https","host":["go2","vhdmedia","se"],"path":["sms","2","text","single"],"query":[{"key":"from ","value":"vhd","description":"Type: String. Represents sender ID and it can be alphanumeric or numeric. Alphanumeric sender ID length should be between 3 and 11 characters (Example: CompanyName). Numeric sender ID length should be between 3 and 14 characters.","disabled":true},{"key":"to","value":"467012345","description":"Type: String. Required.\nArray of message destination addresses. If you want to send a message to one destination, a single String is supported instead of an Array. Destination addresses must be in international format (Example: 41793026727).","disabled":true},{"key":"text","value":"hello world","description":"Type: String. Required. \nText of the message that will be sent.","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"429"},{"key":"Date","value":"Mon, 06 Mar 2023 17:33:28 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1678124009298306830"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"bulkId\": \"37812400930501630431\",\n    \"messages\": [\n        {\n            \"to\": \"4670123456\",\n            \"status\": {\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 7,\n                \"name\": \"PENDING_ENROUTE\",\n                \"description\": \"Message sent to next instance\"\n            },\n            \"messageId\": \"37812400930501630432\",\n            \"smsCount\": 1\n        },\n        {\n            \"to\": \"4670123457\",\n            \"status\": {\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 7,\n                \"name\": \"PENDING_ENROUTE\",\n                \"description\": \"Message sent to next instance\"\n            },\n            \"messageId\": \"37812400930601630433\",\n            \"smsCount\": 1\n        }\n    ]\n}"},{"id":"3f5f6254-9538-4ec7-a2c1-f4821b122156","name":"Sending single message","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{   \n    \"from\": \"VHD\",\n    \"to\":   \"4670123456\",\n    \"text\": \"Hello World\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/sms/2/text/single","protocol":"https","host":["go2","vhdmedia","se"],"path":["sms","2","text","single"],"query":[{"key":"from ","value":"string","description":"Type: String. Represents sender ID and it can be alphanumeric or numeric. Alphanumeric sender ID length should be between 3 and 11 characters (Example: CompanyName). Numeric sender ID length should be between 3 and 14 characters.","disabled":true},{"key":"to","value":"string","description":"Type: String. Required.\nArray of message destination addresses. If you want to send a message to one destination, a single String is supported instead of an Array. Destination addresses must be in international format (Example: 41793026727).","disabled":true},{"key":"text","value":"string","description":"Type: String. Required. \nText of the message that will be sent.","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"205"},{"key":"Date","value":"Thu, 09 Mar 2023 21:26:54 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1678397215170029162"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"messages\": [\n        {\n            \"to\": \"4670123456\",\n            \"status\": {\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 7,\n                \"name\": \"PENDING_ENROUTE\",\n                \"description\": \"Message sent to next instance\"\n            },\n            \"messageId\": \"37839721517937213123\",\n            \"smsCount\": 1\n        }\n    ]\n}"},{"id":"f9811ec3-d341-4ff8-aeb2-fcc6c98a2b5f","name":"Example 400","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"from\": \"\",\n    \"to\":   ,\n    \"text\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/sms/2/text/single","protocol":"https","host":["go2","vhdmedia","se"],"path":["sms","2","text","single"],"query":[{"key":"from ","value":"","description":"Represents sender ID and it can be alphanumeric or numeric. Alphanumeric sender ID length should be between 3 and 11 characters (Example: CompanyName). Numeric sender ID length should be between 3 and 14 characters.","disabled":true},{"key":"to","value":"","description":"Required.\nArray of message destination addresses. If you want to send a message to one destination, a single String is supported instead of an Array. Destination addresses must be in international format (Example: 41793026727).","disabled":true},{"key":"text","value":"","description":"Required. \nText of the message that will be sent.","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"86"},{"key":"Date","value":"Wed, 01 Mar 2023 12:33:15 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1677673995880365828"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"requestError\": {\n        \"serviceException\": {\n            \"messageId\": \"BAD_REQUEST\",\n            \"text\": \"Bad request\"\n        }\n    }\n}"},{"id":"e525abf2-62ef-4beb-b7fc-f690730b4dc3","name":"Example 401","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"from\": \"\",\n    \"to\":   \"\",\n    \"text\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/sms/2/text/single","protocol":"https","host":["go2","vhdmedia","se"],"path":["sms","2","text","single"],"query":[{"key":"from ","value":"","description":"Represents sender ID and it can be alphanumeric or numeric. Alphanumeric sender ID length should be between 3 and 11 characters (Example: CompanyName). Numeric sender ID length should be between 3 and 14 characters.","disabled":true},{"key":"to","value":"","description":"Required.\nArray of message destination addresses. If you want to send a message to one destination, a single String is supported instead of an Array. Destination addresses must be in international format (Example: 41793026727).","disabled":true},{"key":"text","value":"","description":"Required. \nText of the message that will be sent.","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Server","value":"SMS API"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"97"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"requestError\": {\n        \"serviceException\": {\n            \"messageId\": \"UNAUTHORIZED\",\n            \"text\": \"Invalid login details\"\n        }\n    }\n}"}],"_postman_id":"c655b813-4874-4a06-9415-c68cbd2a9142"}],"id":"70a867df-f2c3-47d3-81b0-6a8bba7ba2cb","description":"<p>Send text or binary SMS to one or more recipients, preview a message, and schedule messages. Use <strong>Send SMS messages (API v3, latest)</strong> for new integrations. The v2 and v1 requests are kept for existing integrations.</p>\n","_postman_id":"70a867df-f2c3-47d3-81b0-6a8bba7ba2cb"},{"name":"INBOUND SMS","item":[{"name":"Get inbound SMS messages","event":[{"listen":"test","script":{"exec":["// Tests for Get inbound SMS messages.","pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var res;","pm.test(\"Response body is valid JSON\", function () { res = pm.response.json(); });","","pm.test(\"Response contains the documented fields\", function () {","    pm.expect(res).to.have.property('results').that.is.an('array');","    pm.expect(res).to.have.property('messageCount').that.is.a('number');","    pm.expect(res).to.have.property('pendingMessageCount').that.is.a('number');","});","","pm.test(\"messageCount matches the number of results\", function () {","    pm.expect(res.messageCount).to.equal(res.results.length);","});","","pm.test(\"Each message has the documented fields\", function () {","    res.results.forEach(function (m) {","        ['messageId', 'from', 'to', 'text', 'receivedAt', 'smsCount'].forEach(function (k) {","            pm.expect(m, 'missing field ' + k).to.have.property(k);","        });","    });","});","","pm.test(\"Number of results does not exceed the limit\", function () {","    var limit = parseInt(pm.request.url.query.get('limit') || '50', 10);","    pm.expect(res.results.length).to.be.at.most(limit);","});",""],"type":"text/javascript","packages":{}}}],"id":"7a8fc8d6-643d-4d7a-9a9d-07deb8bf2ec6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[],"url":"https://go2.vhdmedia.se/sms/1/inbox/reports","description":"<p>Fetch SMS that your customers sent to your number, when you cannot receive them in real time on your own server. For real-time delivery, see <strong>Receive inbound SMS messages</strong>.</p>\n<blockquote>\n<p><strong>Each message is returned only once.</strong> Once a message has been fetched with this method, it is not returned by the next call; every call returns only messages that arrived since the previous call. Running this request consumes the messages it returns. Only messages from the last 48 hours are available.</p>\n</blockquote>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<p>All parameters are optional.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>limit</em></td>\n<td>Integer</td>\n<td>Maximum number of messages to return. Default is the latest 50; maximum is 1000.</td>\n</tr>\n<tr>\n<td><em>applicationId</em></td>\n<td>String</td>\n<td>Only messages linked to this application ID.</td>\n</tr>\n<tr>\n<td><em>entityId</em></td>\n<td>String</td>\n<td>Only messages linked to this entity ID.</td>\n</tr>\n<tr>\n<td><em>campaignReferenceId</em></td>\n<td>String</td>\n<td>Only messages linked to this campaign ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results</em></td>\n<td>Array of Object</td>\n<td>The received messages, one object per message.</td>\n</tr>\n<tr>\n<td><em>messageCount</em></td>\n<td>Int</td>\n<td>Number of messages returned in this response.</td>\n</tr>\n<tr>\n<td><em>pendingMessageCount</em></td>\n<td>Int</td>\n<td>Number of new messages still waiting to be fetched by the next call.</td>\n</tr>\n</tbody>\n</table>\n</div><h6 id=\"results\">results[]</h6>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>messageId</em></td>\n<td>String</td>\n<td>Unique ID of the received message.</td>\n</tr>\n<tr>\n<td><em>from</em></td>\n<td>String</td>\n<td>Sender of the message, alphanumeric or numeric.</td>\n</tr>\n<tr>\n<td><em>to</em></td>\n<td>String</td>\n<td>Destination address (your number).</td>\n</tr>\n<tr>\n<td><em>text</em></td>\n<td>String</td>\n<td>Full text of the message.</td>\n</tr>\n<tr>\n<td><em>cleanText</em></td>\n<td>String</td>\n<td>Text of the message without the keyword (if a keyword was sent).</td>\n</tr>\n<tr>\n<td><em>keyword</em></td>\n<td>String</td>\n<td>Keyword extracted from the message text.</td>\n</tr>\n<tr>\n<td><em>receivedAt</em></td>\n<td>Date</td>\n<td>When VHD received the message. Format <code>yyyy-MM-dd'T'HH:mm:ss.SSSZ</code>.</td>\n</tr>\n<tr>\n<td><em>smsCount</em></td>\n<td>Int</td>\n<td>Number of parts the message was split into.</td>\n</tr>\n<tr>\n<td><em>price</em></td>\n<td>Object</td>\n<td><code>pricePerMessage</code> (number) and <code>currency</code> (string).</td>\n</tr>\n<tr>\n<td><em>callbackData</em></td>\n<td>String</td>\n<td>Custom callback data set during setup.</td>\n</tr>\n<tr>\n<td><em>applicationId</em></td>\n<td>String</td>\n<td>Application ID linked to the message.</td>\n</tr>\n<tr>\n<td><em>entityId</em></td>\n<td>String</td>\n<td>Entity ID linked to the message.</td>\n</tr>\n<tr>\n<td><em>campaignReferenceId</em></td>\n<td>String</td>\n<td>ID of the campaign linked to the message.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Errors use the format <code>requestError.serviceException</code> with <code>messageId</code>, <code>text</code> and <code>validationErrors</code>. Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["sms","1","inbox","reports"],"host":["go2","vhdmedia","se"],"query":[{"disabled":true,"description":{"content":"<p>Maximum number of messages to return. Default is the latest 50; maximum is 1000.</p>\n","type":"text/plain"},"key":"limit","value":"50"},{"disabled":true,"description":{"content":"<p>Only messages linked to this application ID.</p>\n","type":"text/plain"},"key":"applicationId","value":""},{"disabled":true,"description":{"content":"<p>Only messages linked to this entity ID.</p>\n","type":"text/plain"},"key":"entityId","value":""},{"disabled":true,"description":{"content":"<p>Only messages linked to this campaign ID.</p>\n","type":"text/plain"},"key":"campaignReferenceId","value":""}],"variable":[]}},"response":[{"id":"4be3582a-b328-47d9-95b9-e5cbd1172813","name":"Receive SMS by Pull method","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":"{\n    \"limit\": 2\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/sms/1/inbox/reports"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"293"},{"key":"Date","value":"Tue, 21 Mar 2023 07:22:12 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1679383332847948828"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"results\": [\n        {\n            \"messageId\": \"5979214246198724922\",\n            \"from\": \"4670123456\",\n            \"to\": \"71611\",\n            \"text\": \"STOPVHD Test2\",\n            \"cleanText\": \"Test2\",\n            \"keyword\": \"STOPVHD\",\n            \"receivedAt\": \"2023-03-21T07:21:42.617+0000\",\n            \"smsCount\": 1,\n            \"price\": {\n                \"pricePerMessage\": 0,\n                \"currency\": \"SEK\"\n            }\n        }\n    ],\n    \"messageCount\": 1,\n    \"pendingMessageCount\": 0\n}"}],"_postman_id":"7a8fc8d6-643d-4d7a-9a9d-07deb8bf2ec6"},{"name":"Receive inbound SMS messages","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","skip(\"This request only documents the message that VHD sends to YOUR server. It is not sent from here.\");"],"type":"text/javascript","packages":{}}}],"id":"d8ce5eff-0629-40f7-b516-c21f78016b99","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"results\": [\n    {\n      \"messageId\": \"817790313235066447\",\n      \"from\": \"test\",\n      \"to\": \"46701923177\",\n      \"text\": \"QUIZ Correct answer is Paris\",\n      \"cleanText\": \"Correct answer is Paris\",\n      \"keyword\": \"QUIZ\",\n      \"receivedAt\": \"2016-10-06T09:28:39.220+0000\",\n      \"smsCount\": 1,\n      \"price\": {\n        \"pricePerMessage\": 0,\n        \"currency\": \"EUR\"\n      },\n      \"callbackData\": \"callbackData\"\n    }\n  ],\n  \"messageCount\": 1,\n  \"pendingMessageCount\": 0\n}","options":{"raw":{"language":"json"}}},"url":"https://{yourDomain}/your/webhook/path","description":"<blockquote>\n<p><strong>Documentation only.</strong> This is the message that VHD sends to a URL on <strong>your</strong> server. It is skipped when you run the collection.</p>\n</blockquote>\n<p>VHD sends each SMS that your customers send to your number to a URL on your server, in real time, as soon as the mobile network delivers it. This is the webhook that <strong>your server</strong> implements; set its URL when the service is activated (contact <a href=\"mailto:support@vhdmedia.se\">support@vhdmedia.se</a>).</p>\n<p>Your server should reply with <code>200 OK</code> to confirm that it accepted the message.</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results</em></td>\n<td>Array of Object</td>\n<td>The received messages, one object per message.</td>\n</tr>\n<tr>\n<td><em>messageCount</em></td>\n<td>Int</td>\n<td>Number of messages in this request.</td>\n</tr>\n<tr>\n<td><em>pendingMessageCount</em></td>\n<td>Int</td>\n<td>Number of new messages still waiting to be delivered or fetched.</td>\n</tr>\n</tbody>\n</table>\n</div><h6 id=\"results\">results[]</h6>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>messageId</em></td>\n<td>String</td>\n<td>Unique ID of the received message.</td>\n</tr>\n<tr>\n<td><em>from</em></td>\n<td>String</td>\n<td>Sender of the message, alphanumeric or numeric.</td>\n</tr>\n<tr>\n<td><em>to</em></td>\n<td>String</td>\n<td>Destination address (your number).</td>\n</tr>\n<tr>\n<td><em>text</em></td>\n<td>String</td>\n<td>Full text of the message.</td>\n</tr>\n<tr>\n<td><em>cleanText</em></td>\n<td>String</td>\n<td>Text of the message without the keyword (if a keyword was sent).</td>\n</tr>\n<tr>\n<td><em>keyword</em></td>\n<td>String</td>\n<td>Keyword extracted from the message text.</td>\n</tr>\n<tr>\n<td><em>receivedAt</em></td>\n<td>Date</td>\n<td>When VHD received the message. Format <code>yyyy-MM-dd'T'HH:mm:ss.SSSZ</code>.</td>\n</tr>\n<tr>\n<td><em>smsCount</em></td>\n<td>Int</td>\n<td>Number of parts the message was split into.</td>\n</tr>\n<tr>\n<td><em>price</em></td>\n<td>Object</td>\n<td><code>pricePerMessage</code> (number) and <code>currency</code> (string).</td>\n</tr>\n<tr>\n<td><em>callbackData</em></td>\n<td>String</td>\n<td>Custom callback data set during setup.</td>\n</tr>\n<tr>\n<td><em>applicationId</em></td>\n<td>String</td>\n<td>Application ID linked to the message.</td>\n</tr>\n<tr>\n<td><em>entityId</em></td>\n<td>String</td>\n<td>Entity ID linked to the message.</td>\n</tr>\n<tr>\n<td><em>campaignReferenceId</em></td>\n<td>String</td>\n<td>ID of the campaign linked to the message.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"example\">Example</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"results\": [\n    {\n      \"messageId\": \"817790313235066447\",\n      \"from\": \"46701234567\",\n      \"to\": \"46761234567\",\n      \"text\": \"QUIZ Correct answer is Paris\",\n      \"cleanText\": \"Correct answer is Paris\",\n      \"keyword\": \"QUIZ\",\n      \"receivedAt\": \"2026-10-06T09:28:39.220+0000\",\n      \"smsCount\": 1,\n      \"price\": { \"pricePerMessage\": 0, \"currency\": \"EUR\" },\n      \"callbackData\": \"callbackData\"\n    }\n  ],\n  \"messageCount\": 1,\n  \"pendingMessageCount\": 0\n}\n</code></pre>\n","urlObject":{"protocol":"https","path":["your","webhook","path"],"host":["{yourDomain}"],"query":[],"variable":[]}},"response":[{"id":"3f784b66-17e3-4d2b-805b-9a0285d3110c","name":"Receive SMS by forward method","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/x-www-form-urlencoded"}],"url":"https://{yourDomain}/your/webhook/path"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"166"},{"key":"Connection","value":"keep-alive"},{"key":"Date","value":"Mon, 22 May 2023 15:33:37 GMT"},{"key":"x-zapier-hook-status","value":"success"},{"key":"access-control-allow-origin","value":"*"},{"key":"X-Rate-Limit-Limit","value":"10000"},{"key":"X-Rate-Limit-Remaining","value":"9999"},{"key":"X-Rate-Limit-Reset","value":"1684769765"},{"key":"X-Cache","value":"Miss from cloudfront"},{"key":"Via","value":"1.1 b088f021bbfbe62b285291be4d6fc2ae.cloudfront.net (CloudFront)"},{"key":"X-Amz-Cf-Pop","value":"LHR61-P4"},{"key":"X-Amz-Cf-Id","value":"4OUCFz7uSQVnrRI6-lzg0NUOBQ7g3q_VsrXL0BMgzXpkxa5tmTCIwg=="}],"cookie":[],"responseTime":null,"body":"{\n    \"attempt\": \"01884418-3778-c19d-8a4d-5a833c9f15c9\",\n    \"id\": \"01884418-3778-c19d-8a4d-5a833c9f15c9\",\n    \"request_id\": \"01884418-3778-c19d-8a4d-5a833c9f15c9\",\n    \"status\": \"success\"\n}"}],"_postman_id":"d8ce5eff-0629-40f7-b516-c21f78016b99"}],"id":"3bdaca7a-6604-40a6-af0b-883aac765675","description":"<p>Receive the SMS that your customers send to your VHD number. There are two ways to get them:</p>\n<ul>\n<li><strong>Get inbound SMS messages</strong>: you call the API and fetch new messages in batches (pull).</li>\n<li><strong>Receive inbound SMS messages</strong>: VHD forwards each message to a URL on your server as soon as it arrives (forward).</li>\n</ul>\n<h2 id=\"activate-service\">Activate service</h2>\n<p>To receive SMS you need a number that can receive messages. To activate the service and set the URL that messages are forwarded to, contact our support at <a href=\"mailto:support@vhdmedia.se\">support@vhdmedia.se</a>.</p>\n","_postman_id":"3bdaca7a-6604-40a6-af0b-883aac765675"},{"name":"NUMBER CONTEXT","item":[{"name":"Number Context Asynchronous request","event":[{"listen":"test","script":{"exec":["// Parse the response body","var responseBody = pm.response.json();","","// Test if status code is 200","pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});","","// Parse the request body","var requestBody = pm.request.body;","","// Extract the 'to' property from the request body","var toNumbers;","try {","    toNumbers = JSON.parse(requestBody.raw).to;","} catch (error) {","    console.log(\"Error parsing request body as JSON:\", error);","}","","// Test if 'to' property exists in the request body","pm.test(\"To property exists in the request body\", function () {","    pm.expect(toNumbers).to.exist;","});","","// Test if 'to' property is an array","pm.test(\"To property is an array\", function () {","    pm.expect(toNumbers).to.be.an('array');","});","","// Test if 'to' array has at least one element","pm.test(\"To array has at least one element\", function () {","    pm.expect(toNumbers).to.have.lengthOf.at.least(1);","});","","// Test if response contains 'results' array","pm.test(\"Response contains 'results' array\", function () {","    pm.expect(responseBody).to.have.property('results').that.is.an('array');","    pm.expect(responseBody.results).to.have.lengthOf(2); // Ensure there are two results","});","","// Test each message in the 'results' array","pm.test(\"Each message contains expected properties\", function () {","    responseBody.results.forEach(function (message) {","        pm.expect(message).to.have.property('to').that.is.a('string');","        pm.expect(message).to.have.property('status').that.is.an('object');","        pm.expect(message.status).to.have.property('groupId').that.is.a('number');","        pm.expect(message.status).to.have.property('groupName').that.is.a('string');","        pm.expect(message.status).to.have.property('id').that.is.a('number');","        pm.expect(message.status).to.have.property('name').that.is.a('string');","        pm.expect(message.status).to.have.property('description').that.is.a('string');","        pm.expect(message).to.have.property('messageId').that.is.a('string');","    });","});","","// Test if 'bulkId' exists in the response","pm.test(\"BulkId exists in the response\", function () {","    pm.expect(responseBody).to.have.property('bulkId').that.is.a('string');","});",""],"type":"text/javascript","packages":{}}}],"id":"0ac7584a-fe20-4795-8888-f66ce73bd63a","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"to\": [\n    \"46701234567\",\n    \"46701234568\"\n  ],\n  \"notifyUrl\": \"https://www.example.com/number/lookup/report\",\n  \"notifyContentType\": \"application/json\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/number/1/notify","description":"<p>This method gives you the ability to make an asynchronous Number Context request over HTTP. Number Lookup response is sent to a notify URL at your call back server.</p>\n<p>This API method is designed for batch numbers processing, to validate large amounts of phone numbers. One example use-case would be validating previously collected numbers from a database.</p>\n<h4 id=\"to-array-of-strings\">to [Array of strings]</h4>\n<p>JSON</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n\"to\": [\"\",],\n\"notifyContentType\": ,\n\"notifyUrl\": \n}\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>notifyUrl</td>\n<td>Srring</td>\n<td>The URL on your call back server on which the lookup report will be sen</td>\n</tr>\n<tr>\n<td>notifyContentType</td>\n<td>String</td>\n<td>Preferred lookup report content type. Can be application/json or application/xml.</td>\n</tr>\n<tr>\n<td>to</td>\n<td>Array of strings</td>\n<td>Array of phone numbers to look up. Numbers must be in international format (Example: 46701234567).</td>\n</tr>\n</tbody>\n</table>\n</div><h1 id=\"response-format\">Response format</h1>\n<p>If successful, the response header HTTP status code will be <code>200 OK</code> and include Number Lookup information in the response body. If you try to send a Number Lookup without authorization, you will get a response with the HTTP status code <code>401 Unauthorized</code>.</p>\n<h4 id=\"ncresponseasync\">NCResponseAsync</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the request. Bulk ID will be received only when you send a Number Lookup to more than one destination address.</td>\n</tr>\n<tr>\n<td><em>results</em></td>\n<td>NCResponseDetails</td>\n<td>Array of Number Lookup results, one per every phone number.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"ncresponsedetails\">NCResponseDetails</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>to</em></td>\n<td>String</td>\n<td>The Number Lookup destination address.</td>\n</tr>\n<tr>\n<td><em>status</em></td>\n<td>Status</td>\n<td>Indicates whether the Number Lookup query was successfully executed, not executed or any other possible status.</td>\n</tr>\n<tr>\n<td><em>messageId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the performed lookup on destination address.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"status\">Status</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>groupId</em></td>\n<td>int</td>\n<td>Status group ID.</td>\n</tr>\n<tr>\n<td><em>groupName</em></td>\n<td>String</td>\n<td>Status group name.</td>\n</tr>\n<tr>\n<td><em>id</em></td>\n<td>int</td>\n<td>Status ID.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>Status name.</td>\n</tr>\n<tr>\n<td><em>description</em></td>\n<td>String</td>\n<td>Human readable description of the status.</td>\n</tr>\n<tr>\n<td><em>action</em></td>\n<td>String</td>\n<td>Action that should be taken to eliminate the error.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"error\">Error</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>groupId</em></td>\n<td>int</td>\n<td>Error group ID.</td>\n</tr>\n<tr>\n<td><em>groupName</em></td>\n<td>String</td>\n<td>Error group name.</td>\n</tr>\n<tr>\n<td><em>id</em></td>\n<td>int</td>\n<td>Error ID.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>Error name.</td>\n</tr>\n<tr>\n<td><em>description</em></td>\n<td>String</td>\n<td>Human readable description of the error.</td>\n</tr>\n<tr>\n<td><em>permanent</em></td>\n<td>boolean</td>\n<td>Tells if the error is permanent.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["number","1","notify"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"c1ecaabf-f55f-4194-8484-54374d15b681","name":"Number Context Asynchronous request","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n\"to\": [\n\"4670123456\",\n\"4670123457\"\n],\n\"notifyUrl\": \"https://www.example.com/number/lookup/report\",\n\"notifyContentType\": \"application/json\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/number/1/notify"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"434"},{"key":"Date","value":"Mon, 20 Mar 2023 12:52:20 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1679316741038515837"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"results\": [\n        {\n            \"to\": \"4670123456\",\n            \"status\": {\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 7,\n                \"name\": \"PENDING_ENROUTE\",\n                \"description\": \"Message sent to next instance\"\n            },\n            \"messageId\": \"2bd09cbf-895c-43ad-b0e1-881b05d46ffe\"\n        },\n        {\n            \"to\": \"4670123457\",\n            \"status\": {\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 7,\n                \"name\": \"PENDING_ENROUTE\",\n                \"description\": \"Message sent to next instance\"\n            },\n            \"messageId\": \"dfd5bb2a-2b45-413a-b6a9-398432789895\"\n        }\n    ],\n    \"bulkId\": \"1679316741073752284\"\n}"}],"_postman_id":"0ac7584a-fe20-4795-8888-f66ce73bd63a"},{"name":"Number Context lookup","event":[{"listen":"test","script":{"exec":["","// Test if status code is 200","pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});","","","// Parse the request body","var requestBody = pm.request.body;","","// Extract the 'to' property from the request body","var toNumbers;","try {","    toNumbers = JSON.parse(requestBody.raw).to;","} catch (error) {","    console.log(\"Error parsing request body as JSON:\", error);","}","","// Test if 'to' property exists in the request body","pm.test(\"To property exists in the request body\", function () {","    pm.expect(toNumbers).to.exist;","});","","// Test if 'to' property is an array","pm.test(\"To property is an array\", function () {","    pm.expect(toNumbers).to.be.an('array');","});","","// Test if 'to' array has at least one element","pm.test(\"To array has at least one element\", function () {","    pm.expect(toNumbers).to.have.lengthOf.at.least(1);","});","","","","","// Parse the response body","var responseBody = pm.response.json();","","","","// Test if 'results' array exists in the response","pm.test(\"Response contains 'results' array\", function () {","    pm.expect(responseBody).to.have.property('results').that.is.an('array');","","});","",""],"type":"text/javascript","packages":{}}}],"id":"ed683dae-cec4-4d84-8284-f3c0550dc0ab","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n\"to\": [\n\"46701234567\"\n]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/number/1/query","description":"<p>This method gives you the ability to make a synchronous Number Context request over HTTP. Number context response is returned immediately, eliminating the need for the call back server.</p>\n<p>Unlike the asynchronous version of Number context, this endpoint is intended to be used <strong>to check smaller amounts of phone numbers</strong> and does not support batch processing. It is more convenient, and can be used in scenarios like validating individual phone numbers collected from the user interface. Note that this API endpoint may incur larger latency then the reset of the API.</p>\n<h4 id=\"to-array-of-strings\">to [Array of strings]</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n\"to\": [\"\",]\n}\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>to</td>\n<td>Array of strings</td>\n<td>Array of phone numbers to look up. Numbers must be in international format (Example: 46701234567).</td>\n</tr>\n</tbody>\n</table>\n</div><h1 id=\"response-format\">Response format</h1>\n<p>If successful, the response header HTTP status code will be <code>200 OK</code> and include Number Context information in the response body. If you try to send a Number Context without authorization, you will get a response with the HTTP status code <code>401 Unauthorized</code>. If your request contains more than 1000 destination addresses, API will return the status code <code>400 Bad Request</code>.</p>\n<h4 id=\"ncresponse\">NCResponse</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the request. Bulk ID will be received only when you send a Number Context to more than one destination address.</td>\n</tr>\n<tr>\n<td><em>results</em></td>\n<td>NCResponseDetails</td>\n<td>Array of Number results, one per every phone number.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"ncresponsedetails\">NCResponseDetails</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>to</em></td>\n<td>String</td>\n<td>The Number Context destination address.</td>\n</tr>\n<tr>\n<td><em>mccMnc</em></td>\n<td>String</td>\n<td>Mobile country code and mobile network code concatenated. MccMnc will start with the MCC, and it will always have three digits, followed by the MNC (length of the MNC depends on the value of the MCC, and it can be two or three).</td>\n</tr>\n<tr>\n<td><em>imsi</em></td>\n<td>String</td>\n<td>International Mobile Subscriber Identity, used to uniquely identify the user of a mobile network.</td>\n</tr>\n<tr>\n<td><em>originalNetwork</em></td>\n<td>Network</td>\n<td>Information about the original network.</td>\n</tr>\n<tr>\n<td><em>ported</em></td>\n<td>Boolean</td>\n<td>Tells if the phone number is ported.</td>\n</tr>\n<tr>\n<td><em>portedNetwork</em></td>\n<td>Network</td>\n<td>Information about the ported network.</td>\n</tr>\n<tr>\n<td><em>roaming</em></td>\n<td>Boolean</td>\n<td>Informs if the phone number is in roaming.</td>\n</tr>\n<tr>\n<td><em>roamingNetwork</em></td>\n<td>Network</td>\n<td>Information about the roaming network.</td>\n</tr>\n<tr>\n<td><em>servingMSC</em></td>\n<td>String</td>\n<td>Serving mobile switching center.</td>\n</tr>\n<tr>\n<td><em>status</em></td>\n<td>Status</td>\n<td>Indicates whether the Number Context query was successfully executed, not executed or any other possible status.</td>\n</tr>\n<tr>\n<td><em>error</em></td>\n<td>Error</td>\n<td>Indicates whether the error occurred during the query execution.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"network\">Network</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>networkName</em></td>\n<td>String</td>\n<td>Network name.</td>\n</tr>\n<tr>\n<td><em>networkPrefix</em></td>\n<td>String</td>\n<td>Network prefix.</td>\n</tr>\n<tr>\n<td><em>countryName</em></td>\n<td>String</td>\n<td>Country name.</td>\n</tr>\n<tr>\n<td><em>countryPrefix</em></td>\n<td>String</td>\n<td>Country prefix.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"status\">Status</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>groupId</em></td>\n<td>int</td>\n<td>Status group ID.</td>\n</tr>\n<tr>\n<td><em>groupName</em></td>\n<td>String</td>\n<td>Status group name.</td>\n</tr>\n<tr>\n<td><em>id</em></td>\n<td>int</td>\n<td>Status ID.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>Status name.</td>\n</tr>\n<tr>\n<td><em>description</em></td>\n<td>String</td>\n<td>Human readable description of the status.</td>\n</tr>\n<tr>\n<td><em>action</em></td>\n<td>String</td>\n<td>Action that should be taken to eliminate the error.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"error\">Error</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>groupId</em></td>\n<td>int</td>\n<td>Error group ID.</td>\n</tr>\n<tr>\n<td><em>groupName</em></td>\n<td>String</td>\n<td>Error group name.</td>\n</tr>\n<tr>\n<td><em>id</em></td>\n<td>int</td>\n<td>Error ID.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>Error name.</td>\n</tr>\n<tr>\n<td><em>description</em></td>\n<td>String</td>\n<td>Human readable description of the error.</td>\n</tr>\n<tr>\n<td><em>permanent</em></td>\n<td>boolean</td>\n<td>Tells if the error is permanent.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-response-fields\">Additional response fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results[].originalNetwork.networkId</em></td>\n<td>Int</td>\n<td>ID of the network.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["number","1","query"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"34d82d40-ec4f-40cf-9e4c-d2c448e2e6eb","name":"Number Context lookup","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n\"to\": [\n\"4670123456\"\n]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/number/1/query"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"398"},{"key":"Date","value":"Mon, 20 Mar 2023 12:58:32 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1679317113086870827"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"results\": [\n        {\n            \"to\": \"4670123456\",\n            \"mccMnc\": \"22801\",\n            \"imsi\": \"22801\",\n            \"originalNetwork\": {\n                \"networkPrefix\": \"79302\",\n                \"countryPrefix\": \"41\"\n            },\n            \"ported\": false,\n            \"roaming\": false,\n            \"status\": {\n                \"groupId\": 3,\n                \"groupName\": \"DELIVERED\",\n                \"id\": 5,\n                \"name\": \"DELIVERED_TO_HANDSET\",\n                \"description\": \"Message delivered to handset\"\n            },\n            \"error\": {\n                \"groupId\": 0,\n                \"groupName\": \"OK\",\n                \"id\": 0,\n                \"name\": \"NO_ERROR\",\n                \"description\": \"No Error\",\n                \"permanent\": false\n            }\n        }\n    ]\n}"}],"_postman_id":"ed683dae-cec4-4d84-8284-f3c0550dc0ab"},{"name":"Get Number Context logs","event":[{"listen":"test","script":{"exec":["// Parse the response body","var responseBody = pm.response.json();","","// Test if status code is 200","pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});","","// Test if 'results' array exists in the response","pm.test(\"Response contains 'results' array\", function () {","    pm.expect(responseBody).to.have.property('results').that.is.an('array');","","});","",""],"type":"text/javascript","packages":{}}}],"id":"3c9562fc-b426-4e16-b043-c08b451a3132","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[],"url":"https://go2.vhdmedia.se/number/1/logs","description":"<p>This method allows you to get logs of sent Number Context requests.</p>\n<h3 id=\"request-rate-limit\">Request rate limit</h3>\n<p>60 requests / minute (per account)</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>to</td>\n<td>string</td>\n<td>Destination address.</td>\n</tr>\n<tr>\n<td>bulkId</td>\n<td>Array of strings</td>\n<td>Bulk ID for which log is requested.</td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>Array of strings</td>\n<td>NC lookup ID for which log is requested.</td>\n</tr>\n<tr>\n<td>generalStatus</td>\n<td>string</td>\n<td>Requested Number Context status.</td>\n</tr>\n<tr>\n<td>sentSince</td>\n<td>string</td>\n<td>Example: sentSince=2024-02-22T17:42:05.390+0100  <br />  <br />0r  <br />sentSince=2024-03-24T17:42:05.39+0100  <br />  <br />Lower limit for NC sentAt time (time of sending the lookup). Has the following format: yyyy-MM-dd'T'HH:mm:ss.SSSZ.</td>\n</tr>\n<tr>\n<td>sentUntil</td>\n<td>string</td>\n<td>string Example: sentUntil=2024-03-25T16:50:05+100  <br />  <br />or  <br />  <br />2024-03-25T16:50:05+0100  <br />  <br />Upper limit for NC sentAt time (time of sending the lookup). Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSSZ</code>.  <br />  <br />or  <br />  <br />yyyy T HH:mm::ss.sssZ</td>\n</tr>\n<tr>\n<td>limit</td>\n<td>integer</td>\n<td>Maximal number of Number Context lookups in returned logs.</td>\n</tr>\n<tr>\n<td>mcc</td>\n<td>string</td>\n<td>Mobile country code.</td>\n</tr>\n<tr>\n<td>mnc</td>\n<td>string</td>\n<td>Mobile network code.</td>\n</tr>\n</tbody>\n</table>\n</div><h1 id=\"responses\">Responses</h1>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>results</td>\n<td>Array of objects</td>\n<td>Collection of logs.</td>\n</tr>\n<tr>\n<td>Array [  <br />bulkId  <br />  <br />  <br />doneAt</td>\n<td>string  <br />  <br />  <br />string</td>\n<td>The ID that uniquely identifies the request.  <br />  <br />  <br />Tells when VHD finished processing the lookup (e.g. lookup request was delivered to the destination network). Has the following format: yyyy-MM-dd'T'HH:mm:ss.SSSZ.</td>\n</tr>\n<tr>\n<td>error  <br />  <br />{  <br />  <br />  <br />description  <br />  <br />  <br />  <br />  <br />groupId  <br />  <br />groupName  <br />  <br />  <br />  <br />id  <br />  <br />  <br />name  <br />  <br />  <br />permanent  <br />  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />integer  <br />  <br />string  <br />  <br />  <br />  <br />integer  <br />  <br />  <br />string  <br />  <br />  <br />boolean</td>\n<td>object  <br />  <br />  <br />  <br />  <br />Human-readable description of the error..  <br />  <br />  <br />  <br />  <br />Error group ID.  <br />  <br />Error group name.  <br />  <br />  <br />  <br />Error ID.  <br />  <br />  <br />Error name.  <br />  <br />  <br />Tells if the error is permanent.</td>\n</tr>\n<tr>\n<td>mccMnc</td>\n<td>string</td>\n<td>Mobile country and network codes.</td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>The ID that uniquely identifies the performed lookup.</td>\n</tr>\n<tr>\n<td>price  <br />  <br />{  <br />  <br />  <br />currency  <br />  <br />  <br />  <br />  <br />pricePerMessage  <br />  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />number</td>\n<td>object  <br />  <br />  <br />  <br />  <br />The currency in which the price is expressed.  <br />  <br />  <br />  <br />  <br />Price per one SMS.</td>\n</tr>\n<tr>\n<td>sentAt</td>\n<td>string</td>\n<td>Tells when the lookup was performed. Has the following format: yyyy-MM-dd'T'HH:mm:ss.SSSZ.</td>\n</tr>\n<tr>\n<td>status  <br />  <br />{  <br />  <br />action  <br />  <br />  <br />  <br />  <br />  <br />description  <br />  <br />  <br />  <br />  <br />groupId  <br />  <br />  <br />id  <br />  <br />  <br />name  <br />  <br />  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />integer  <br />  <br />  <br />integer  <br />  <br />  <br />string</td>\n<td>object  <br />  <br />  <br />  <br />Action that should be taken to recover from the error.  <br />  <br />  <br />  <br />  <br />  <br />Human-readable description of the status.  <br />  <br />  <br />  <br />  <br />Status group ID.  <br />  <br />  <br />Status ID.  <br />  <br />  <br />Status name.</td>\n</tr>\n<tr>\n<td>to  <br />  <br />]</td>\n<td>string</td>\n<td>The looked up phone number.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-response-fields\">Additional response fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results[].price.pricePerLookup</em></td>\n<td>Number</td>\n<td>Price per one NC lookup.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["number","1","logs"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"06715981-e60c-4e31-bfa5-827962dab619","name":"Get Number Context logs","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://go2.vhdmedia.se/number/1/logs?sentSince=2024-03-24T17%3A42%3A05%2B0100&sentUntil=2024-03-25T16%3A50%3A05%2B0100","protocol":"https","host":["go2","vhdmedia","se"],"path":["number","1","logs"],"query":[{"key":"sentSince","value":"2024-03-24T17%3A42%3A05%2B0100"},{"key":"sentUntil","value":"2024-03-25T16%3A50%3A05%2B0100"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"vary","value":"Origin"},{"key":"vary","value":"Access-Control-Request-Method"},{"key":"vary","value":"Access-Control-Request-Headers"},{"key":"access-control-allow-origin","value":"*"},{"key":"access-control-allow-methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"access-control-allow-headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"content-type","value":"application/json;charset=UTF-8"},{"key":"content-length","value":"541"},{"key":"date","value":"Mon, 25 Mar 2024 15:50:28 GMT"},{"key":"server","value":"SMS API"},{"key":"x-request-id","value":"1711381828740906829"},{"key":"strict-transport-security","value":"max-age=31536000; includeSubDomains; preload;"},{"key":"connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"results\": [\n        {\n            \"bulkId\": \"1711381775048065755\",\n            \"messageId\": \"4a05e95a-517a-4c6f-ab07-0f3f281389b9\",\n            \"to\": \"46701234567\",\n            \"sentAt\": \"2024-03-25T15:49:35.051+0000\",\n            \"doneAt\": \"2024-03-25T15:49:35.405+0000\",\n            \"mccMnc\": \"24013\",\n            \"price\": {\n                \"currency\": \"SEK\",\n                \"pricePerLookup\": 0.25\n            },\n            \"status\": {\n                \"groupId\": 2,\n                \"groupName\": \"UNDELIVERABLE\",\n                \"id\": 9,\n                \"name\": \"UNDELIVERABLE_NOT_DELIVERED\",\n                \"description\": \"Message sent not delivered\"\n            },\n            \"error\": {\n                \"groupId\": 1,\n                \"groupName\": \"HANDSET_ERRORS\",\n                \"id\": 27,\n                \"name\": \"EC_ABSENT_SUBSCRIBER\",\n                \"description\": \"Absent Subscriber\",\n                \"permanent\": false\n            }\n        }\n    ]\n}"}],"_postman_id":"3c9562fc-b426-4e16-b043-c08b451a3132"}],"id":"949f0583-3c6e-46cb-8799-9bbabe7e9c3d","description":"<p>Look up phone numbers to check whether they are valid and reachable, and see their network details, before you send.</p>\n","_postman_id":"949f0583-3c6e-46cb-8799-9bbabe7e9c3d"},{"name":"LOGS AND REPORTS","item":[{"name":"Delivery reports (API v3, latest)","event":[{"listen":"test","script":{"exec":["// Tests for the delivery reports (v3) response.","pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var res;","pm.test(\"Response body is valid JSON\", function () { res = pm.response.json(); });","","pm.test(\"Response contains 'results' array\", function () {","    pm.expect(res).to.have.property('results').that.is.an('array');","});","","pm.test(\"Each report has the documented fields\", function () {","    res.results.forEach(function (r) {","        ['messageId', 'to', 'sender', 'sentAt', 'doneAt', 'messageCount', 'status'].forEach(function (k) {","            pm.expect(r, 'missing field ' + k).to.have.property(k);","        });","        pm.expect(r.status).to.include.all.keys('groupId', 'groupName', 'id', 'name', 'description');","        pm.expect(r.status.groupName).to.be.oneOf(['ACCEPTED', 'PENDING', 'UNDELIVERABLE', 'DELIVERED', 'EXPIRED', 'REJECTED']);","        if (r.error) {","            pm.expect(r.error.groupName).to.be.oneOf(['OK', 'HANDSET_ERRORS', 'USER_ERRORS', 'OPERATOR_ERRORS']);","        }","    });","});",""],"type":"text/javascript","packages":{}}}],"id":"0da0b587-97f4-4d67-98a0-28108da8238f","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/sms/3/reports","description":"<p>Get delivery reports for sent SMS when you cannot receive them in real time on your own server. This is the current version of the delivery reports API; messages sent with <strong>Send SMS messages (API v3)</strong> use these field names.</p>\n<p>Each request returns a batch of reports <strong>only once</strong>: a report you have already fetched is not returned again. If a message status changes later, the next request returns a new report for the updated status. Reports from the last 48 hours are available.</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>ID of the request. Returns reports for the messages sent in that request.</td>\n</tr>\n<tr>\n<td><em>messageId</em></td>\n<td>String</td>\n<td>ID of one message to get the report for.</td>\n</tr>\n<tr>\n<td><em>limit</em></td>\n<td>Integer</td>\n<td>Maximum number of reports to return. Default is the latest 50; maximum is 1000.</td>\n</tr>\n<tr>\n<td><em>entityId</em></td>\n<td>String</td>\n<td>Entity ID used to send the message.</td>\n</tr>\n<tr>\n<td><em>applicationId</em></td>\n<td>String</td>\n<td>Application ID used to send the message.</td>\n</tr>\n<tr>\n<td><em>campaignReferenceId</em></td>\n<td>String</td>\n<td>ID of the campaign included in the message.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code> with a <code>results</code> array, one report per message.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>ID of the request that contained the message.</td>\n</tr>\n<tr>\n<td><em>messageId</em></td>\n<td>String</td>\n<td>Unique message ID.</td>\n</tr>\n<tr>\n<td><em>to</em></td>\n<td>String</td>\n<td>Destination address.</td>\n</tr>\n<tr>\n<td><em>sender</em></td>\n<td>String</td>\n<td>Sender ID, alphanumeric or numeric.</td>\n</tr>\n<tr>\n<td><em>sentAt</em></td>\n<td>Date</td>\n<td>When the message was sent. Format <code>yyyy-MM-dd'T'HH:mm:ss.SSSZ</code>.</td>\n</tr>\n<tr>\n<td><em>doneAt</em></td>\n<td>Date</td>\n<td>When processing of the message finished. Same format.</td>\n</tr>\n<tr>\n<td><em>messageCount</em></td>\n<td>Int</td>\n<td>Number of message parts.</td>\n</tr>\n<tr>\n<td><em>mccMnc</em></td>\n<td>String</td>\n<td>Mobile country and network codes.</td>\n</tr>\n<tr>\n<td><em>callbackData</em></td>\n<td>String</td>\n<td>Callback data sent with the message.</td>\n</tr>\n<tr>\n<td><em>price</em></td>\n<td>Object</td>\n<td><code>pricePerMessage</code> (number) and <code>currency</code> (string).</td>\n</tr>\n<tr>\n<td><em>status</em></td>\n<td>Object</td>\n<td><code>groupId</code>, <code>groupName</code> (<code>ACCEPTED</code>, <code>PENDING</code>, <code>UNDELIVERABLE</code>, <code>DELIVERED</code>, <code>EXPIRED</code>, <code>REJECTED</code>), <code>id</code>, <code>name</code>, <code>description</code>, <code>action</code>.</td>\n</tr>\n<tr>\n<td><em>error</em></td>\n<td>Object</td>\n<td><code>groupId</code>, <code>groupName</code> (<code>OK</code>, <code>HANDSET_ERRORS</code>, <code>USER_ERRORS</code>, <code>OPERATOR_ERRORS</code>), <code>id</code>, <code>name</code>, <code>description</code>, <code>permanent</code> (Boolean).</td>\n</tr>\n<tr>\n<td><em>platform</em></td>\n<td>Object</td>\n<td><code>entityId</code> and <code>applicationId</code> used to send the message.</td>\n</tr>\n<tr>\n<td><em>campaignReferenceId</em></td>\n<td>String</td>\n<td>ID of the campaign included in the message.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Errors use the common format: <code>errorCode</code>, <code>description</code>, <code>action</code>, <code>violations[]</code>. Status codes: <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>500</code> server error.</p>\n<blockquote>\n<p>Because each report is returned only once, running this request consumes the reports it returns.</p>\n</blockquote>\n","urlObject":{"protocol":"https","path":["sms","3","reports"],"host":["go2","vhdmedia","se"],"query":[{"disabled":true,"description":{"content":"<p>ID of the request. Returns reports for the messages sent in that request.</p>\n","type":"text/plain"},"key":"bulkId","value":""},{"disabled":true,"description":{"content":"<p>ID of one message to get the report for.</p>\n","type":"text/plain"},"key":"messageId","value":""},{"disabled":true,"description":{"content":"<p>Maximum number of reports to return. Default 50, maximum 1000.</p>\n","type":"text/plain"},"key":"limit","value":"50"},{"disabled":true,"description":{"content":"<p>Entity ID used to send the message.</p>\n","type":"text/plain"},"key":"entityId","value":""},{"disabled":true,"description":{"content":"<p>Application ID used to send the message.</p>\n","type":"text/plain"},"key":"applicationId","value":""},{"disabled":true,"description":{"content":"<p>ID of the campaign included in the message.</p>\n","type":"text/plain"},"key":"campaignReferenceId","value":""}],"variable":[]}},"response":[{"id":"a56804f5-17a4-4345-a198-9181727bb568","name":"Delivery reports","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/sms/3/reports"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"results\": [\n    {\n      \"bulkId\": \"BULK-ID-123-xyz\",\n      \"price\": {\n        \"pricePerMessage\": 0.01,\n        \"currency\": \"EUR\"\n      },\n      \"status\": {\n        \"groupId\": 3,\n        \"groupName\": \"DELIVERED\",\n        \"id\": 5,\n        \"name\": \"DELIVERED_TO_HANDSET\",\n        \"description\": \"Message delivered to handset\"\n      },\n      \"error\": {\n        \"groupId\": 0,\n        \"groupName\": \"OK\",\n        \"id\": 0,\n        \"name\": \"NO_ERROR\",\n        \"description\": \"No Error\",\n        \"permanent\": false\n      },\n      \"messageId\": \"MESSAGE-ID-123-xyz\",\n      \"to\": \"46731234567\",\n      \"sender\": \"VHD\",\n      \"sentAt\": \"2026-10-17T20:21:19.236+0000\",\n      \"doneAt\": \"2026-10-17T20:21:22.367+0000\",\n      \"messageCount\": 1,\n      \"mccMnc\": \"24007\",\n      \"callbackData\": \"DLR callback data\",\n      \"platform\": {\n        \"entityId\": \"promotional-traffic-entity\",\n        \"applicationId\": \"marketing-automation-application\"\n      },\n      \"campaignReferenceId\": \"my-campaign\"\n    }\n  ]\n}"},{"id":"1b8276be-0f40-43fd-b75a-57701fcd717a","name":"Unauthorized - invalid API key","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/sms/3/reports"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E401\",\n  \"description\": \"The request lacks valid authentication credentials for the requested resource.\",\n  \"action\": \"Check the resources and adjust authentication credentials.\",\n  \"violations\": [],\n  \"resources\": []\n}"}],"_postman_id":"0da0b587-97f4-4d67-98a0-28108da8238f"},{"name":"Sent messages logs (API v3, latest)","event":[{"listen":"test","script":{"exec":["// Tests for the sent messages logs (v3) response.","pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var res;","pm.test(\"Response body is valid JSON\", function () { res = pm.response.json(); });","","pm.test(\"Response contains 'results' array\", function () {","    pm.expect(res).to.have.property('results').that.is.an('array');","});","","pm.test(\"Each log entry has the documented fields\", function () {","    res.results.forEach(function (r) {","        ['sender', 'destination', 'messageId', 'sentAt', 'messageCount', 'status'].forEach(function (k) {","            pm.expect(r, 'missing field ' + k).to.have.property(k);","        });","        pm.expect(r.status).to.include.all.keys('groupId', 'groupName', 'id', 'name', 'description');","        pm.expect(r.status.groupName).to.be.oneOf(['ACCEPTED', 'PENDING', 'UNDELIVERABLE', 'DELIVERED', 'EXPIRED', 'REJECTED']);","    });","});",""],"type":"text/javascript","packages":{}}}],"id":"3ee4bf3c-ac77-4603-9933-24a89af01bab","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/sms/3/logs","description":"<p>Get logs of sent SMS, for example to show them in a user interface. This is the current version of the logs API; messages sent with <strong>Send SMS messages (API v3)</strong> use these field names. Logs from the last 48 hours are available, up to 1000 per call. To check whether messages were delivered, use <strong>Delivery reports</strong> instead.</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>sender</em></td>\n<td>String</td>\n<td>Sender ID, alphanumeric or numeric.</td>\n</tr>\n<tr>\n<td><em>destination</em></td>\n<td>String</td>\n<td>Destination address.</td>\n</tr>\n<tr>\n<td><em>bulkId</em></td>\n<td>Array of Strings</td>\n<td>Bulk ID(s), comma-separated, up to 2048 characters.</td>\n</tr>\n<tr>\n<td><em>messageId</em></td>\n<td>Array of Strings</td>\n<td>Message ID(s), comma-separated, up to 2048 characters.</td>\n</tr>\n<tr>\n<td><em>generalStatus</em></td>\n<td>String</td>\n<td>Status category: <code>ACCEPTED</code>, <code>PENDING</code>, <code>UNDELIVERABLE</code>, <code>DELIVERED</code>, <code>EXPIRED</code>, or <code>REJECTED</code>.</td>\n</tr>\n<tr>\n<td><em>sentSince</em></td>\n<td>Date-time</td>\n<td>Only messages sent after this time. Format <code>yyyy-MM-dd'T'HH:mm:ss.SSSZ</code>.</td>\n</tr>\n<tr>\n<td><em>sentUntil</em></td>\n<td>Date-time</td>\n<td>Only messages sent before this time. Same format. Use with <code>sentSince</code> for a range.</td>\n</tr>\n<tr>\n<td><em>limit</em></td>\n<td>Integer</td>\n<td>Maximum number of messages to return. Default 50; maximum 1000.</td>\n</tr>\n<tr>\n<td><em>mcc</em></td>\n<td>String</td>\n<td>Mobile Country Code.</td>\n</tr>\n<tr>\n<td><em>mnc</em></td>\n<td>String</td>\n<td>Mobile Network Code. Requires <code>mcc</code>.</td>\n</tr>\n<tr>\n<td><em>entityId</em></td>\n<td>String</td>\n<td>Entity ID used to send the message.</td>\n</tr>\n<tr>\n<td><em>applicationId</em></td>\n<td>String</td>\n<td>Application ID used to send the message.</td>\n</tr>\n<tr>\n<td><em>campaignReferenceId</em></td>\n<td>Array of Strings</td>\n<td>Campaign ID(s), comma-separated.</td>\n</tr>\n<tr>\n<td><em>useCursor</em></td>\n<td>Boolean</td>\n<td>Set to <code>true</code> to page through results with a cursor.</td>\n</tr>\n<tr>\n<td><em>cursor</em></td>\n<td>String</td>\n<td>Position in the results. Leave empty on the first request, then pass the <code>nextCursor</code> value from the previous response.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results</em></td>\n<td>Array of Object</td>\n<td>One log entry per message.</td>\n</tr>\n<tr>\n<td><em>cursor</em></td>\n<td>Object</td>\n<td>Present when <code>useCursor</code> is <code>true</code>: <code>limit</code> (requested limit) and <code>nextCursor</code> (pass as <code>cursor</code> in the next request).</td>\n</tr>\n</tbody>\n</table>\n</div><h6 id=\"results\">results[]</h6>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>sender</em></td>\n<td>String</td>\n<td>Sender ID.</td>\n</tr>\n<tr>\n<td><em>destination</em></td>\n<td>String</td>\n<td>Destination address.</td>\n</tr>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>ID of the request that contained the message.</td>\n</tr>\n<tr>\n<td><em>messageId</em></td>\n<td>String</td>\n<td>Unique message ID.</td>\n</tr>\n<tr>\n<td><em>sentAt</em></td>\n<td>Date</td>\n<td>When the message was sent.</td>\n</tr>\n<tr>\n<td><em>doneAt</em></td>\n<td>Date</td>\n<td>When processing of the message finished.</td>\n</tr>\n<tr>\n<td><em>messageCount</em></td>\n<td>Int</td>\n<td>Number of message parts.</td>\n</tr>\n<tr>\n<td><em>mccMnc</em></td>\n<td>String</td>\n<td>Mobile country and network codes.</td>\n</tr>\n<tr>\n<td><em>price</em></td>\n<td>Object</td>\n<td><code>pricePerMessage</code> (number) and <code>currency</code> (string).</td>\n</tr>\n<tr>\n<td><em>status</em></td>\n<td>Object</td>\n<td><code>groupId</code>, <code>groupName</code>, <code>id</code>, <code>name</code>, <code>description</code>, <code>action</code>.</td>\n</tr>\n<tr>\n<td><em>error</em></td>\n<td>Object</td>\n<td><code>groupId</code>, <code>groupName</code> (<code>OK</code>, <code>HANDSET_ERRORS</code>, <code>USER_ERRORS</code>, <code>OPERATOR_ERRORS</code>), <code>id</code>, <code>name</code>, <code>description</code>, <code>permanent</code> (Boolean).</td>\n</tr>\n<tr>\n<td><em>platform</em></td>\n<td>Object</td>\n<td><code>entityId</code> and <code>applicationId</code>.</td>\n</tr>\n<tr>\n<td><em>content</em></td>\n<td>Object</td>\n<td>For text messages: <code>text</code>, <code>transliteration</code>, <code>language</code> (<code>languageCode</code>, <code>singleShift</code>, <code>lockingShift</code>). For binary messages: <code>dataCoding</code>, <code>esmClass</code>, <code>hex</code>.</td>\n</tr>\n<tr>\n<td><em>campaignReferenceId</em></td>\n<td>String</td>\n<td>ID of the campaign included in the message.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Errors use the common format: <code>errorCode</code>, <code>description</code>, <code>action</code>, <code>violations[]</code>. Status codes: <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["sms","3","logs"],"host":["go2","vhdmedia","se"],"query":[{"disabled":true,"description":{"content":"<p>Sender ID, alphanumeric or numeric.</p>\n","type":"text/plain"},"key":"sender","value":""},{"disabled":true,"description":{"content":"<p>Destination address.</p>\n","type":"text/plain"},"key":"destination","value":""},{"disabled":true,"description":{"content":"<p>Bulk ID(s), comma-separated.</p>\n","type":"text/plain"},"key":"bulkId","value":""},{"disabled":true,"description":{"content":"<p>Message ID(s), comma-separated.</p>\n","type":"text/plain"},"key":"messageId","value":""},{"disabled":true,"description":{"content":"<p>Status category: ACCEPTED, PENDING, UNDELIVERABLE, DELIVERED, EXPIRED, or REJECTED.</p>\n","type":"text/plain"},"key":"generalStatus","value":"DELIVERED"},{"disabled":true,"description":{"content":"<p>Only messages sent after this time.</p>\n","type":"text/plain"},"key":"sentSince","value":"2026-10-17T00:00:00.000+0000"},{"disabled":true,"description":{"content":"<p>Only messages sent before this time.</p>\n","type":"text/plain"},"key":"sentUntil","value":"2026-10-18T00:00:00.000+0000"},{"disabled":true,"description":{"content":"<p>Maximum number of messages to return. Default 50, maximum 1000.</p>\n","type":"text/plain"},"key":"limit","value":"50"},{"disabled":true,"description":{"content":"<p>Mobile Country Code.</p>\n","type":"text/plain"},"key":"mcc","value":""},{"disabled":true,"description":{"content":"<p>Mobile Network Code. Requires mcc.</p>\n","type":"text/plain"},"key":"mnc","value":""},{"disabled":true,"description":{"content":"<p>Entity ID used to send the message.</p>\n","type":"text/plain"},"key":"entityId","value":""},{"disabled":true,"description":{"content":"<p>Application ID used to send the message.</p>\n","type":"text/plain"},"key":"applicationId","value":""},{"disabled":true,"description":{"content":"<p>Campaign ID(s), comma-separated.</p>\n","type":"text/plain"},"key":"campaignReferenceId","value":""},{"disabled":true,"description":{"content":"<p>Set to true to page through results with a cursor.</p>\n","type":"text/plain"},"key":"useCursor","value":"true"},{"disabled":true,"description":{"content":"<p>Position in the results; pass nextCursor from the previous response.</p>\n","type":"text/plain"},"key":"cursor","value":""}],"variable":[]}},"response":[{"id":"fd711861-fc81-4eb9-b7f4-70eae94b44b6","name":"Sent messages logs","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/sms/3/logs"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"results\": [\n    {\n      \"sender\": \"VHD\",\n      \"destination\": \"46731234567\",\n      \"bulkId\": \"179226847914607951934957\",\n      \"messageId\": \"179226847914607951934958\",\n      \"sentAt\": \"2026-10-17T20:21:19.236+0000\",\n      \"doneAt\": \"2026-10-17T20:21:22.367+0000\",\n      \"messageCount\": 1,\n      \"price\": {\n        \"pricePerMessage\": 0.01,\n        \"currency\": \"EUR\"\n      },\n      \"status\": {\n        \"groupId\": 3,\n        \"groupName\": \"DELIVERED\",\n        \"id\": 5,\n        \"name\": \"DELIVERED_TO_HANDSET\",\n        \"description\": \"Message delivered to handset\"\n      },\n      \"error\": {\n        \"groupId\": 0,\n        \"groupName\": \"OK\",\n        \"id\": 0,\n        \"name\": \"NO_ERROR\",\n        \"description\": \"No Error\",\n        \"permanent\": false\n      },\n      \"platform\": {\n        \"applicationId\": \"default\"\n      },\n      \"content\": {\n        \"text\": \"Hello World\"\n      },\n      \"campaignReferenceId\": \"my-campaign\",\n      \"mccMnc\": \"24007\"\n    }\n  ]\n}"},{"id":"95cd9b58-92b5-4da9-af6c-725565521d12","name":"Unauthorized - invalid API key","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/sms/3/logs"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E401\",\n  \"description\": \"The request lacks valid authentication credentials for the requested resource.\",\n  \"action\": \"Check the resources and adjust authentication credentials.\",\n  \"violations\": [],\n  \"resources\": []\n}"}],"_postman_id":"3ee4bf3c-ac77-4603-9933-24a89af01bab"},{"name":"Delivery reports (API v1)","event":[{"listen":"test","script":{"exec":["// Parse the response body","var responseBody = pm.response.json();","","// Test if status code is 200","pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});","","// Test if 'results' array exists in the response","pm.test(\"Response contains 'results' array\", function () {","    pm.expect(responseBody).to.have.property('results').that.is.an('array');","","    // Iterate over each message in the 'results' array","    responseBody.results.forEach(function (message, index) {","        // Test the message in the 'results' array","    ","    });","});","",""],"type":"text/javascript","packages":{}}}],"id":"e2aa6a08-57d7-4c31-97ed-3e09705be486","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[],"url":"https://go2.vhdmedia.se/sms/1/reports","description":"<blockquote>\n<p><strong>Previous version (v1).</strong> New integrations should use <strong>Delivery reports (API v3)</strong> (`GET /sms/3/reports`), which uses the same field names as <strong>Send SMS messages (API v3)</strong>.</p>\n</blockquote>\n<p>This method allows you to get one time delivery reports for sent SMS. Each request returns a batch of new reports only once; reports from the last 48 hours are available.</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"bulkId\": \"\",\n  \"messageId\": \"\",\n  \"limit\": \"\"\n}\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the request. Bulk ID will be received only when you send a message to more than one destination address.</td>\n</tr>\n<tr>\n<td><em>messageId</em>  <br /></td>\n<td>String</td>\n<td><br />The ID that uniquely identifies the message sent.  <br />  <br /></td>\n</tr>\n<tr>\n<td>limit</td>\n<td>Integer</td>\n<td>Maximum number of delivery reports to return. Default is the latest 50; maximum is 1000. Only reports from the last 48 hours are available.</td>\n</tr>\n<tr>\n<td><em>applicationId</em></td>\n<td>String</td>\n<td>Application ID used to send the message.</td>\n</tr>\n<tr>\n<td><em>entityId</em></td>\n<td>String</td>\n<td>Entity ID used to send the message.</td>\n</tr>\n<tr>\n<td><em>campaignReferenceId</em></td>\n<td>String</td>\n<td>ID of the campaign sent in the message.</td>\n</tr>\n</tbody>\n</table>\n</div><h1 id=\"response-format\">Response format</h1>\n<p>On success, response header HTTP status code will be <code>200 OK</code> and delivery reports will be returned in the response body.</p>\n<p>If you try to send a message without authorization, you will get a response with HTTP status code <code>401 Unauthorized</code>.</p>\n<h3 id=\"smsreportresponse\">SMSReportResponse</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results</em></td>\n<td>SentSMSReport</td>\n<td>Collection of reports, one per every message.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"sentsmsreport\">SentSMSReport</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>Bulk ID.</td>\n</tr>\n<tr>\n<td><em>messageId</em></td>\n<td>String</td>\n<td>Message ID.</td>\n</tr>\n<tr>\n<td><em>to</em></td>\n<td>String</td>\n<td>Destination address.</td>\n</tr>\n<tr>\n<td><em>from</em></td>\n<td>String</td>\n<td>Sender ID that can be alphanumeric or numeric.</td>\n</tr>\n<tr>\n<td><em>sentAt</em></td>\n<td>Date</td>\n<td>Tells when the SMS was sent. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSSZ</code>.</td>\n</tr>\n<tr>\n<td><em>doneAt</em></td>\n<td>Date</td>\n<td>Tells when the SMS was finished processing by our system (ie. delivered to destination, delivered to destination network, etc.)</td>\n</tr>\n<tr>\n<td><em>smsCount</em></td>\n<td>int</td>\n<td>Number of parts the sent SMS was split into.</td>\n</tr>\n<tr>\n<td><em>mccMnc</em></td>\n<td>String</td>\n<td>Mobile country and network codes.</td>\n</tr>\n<tr>\n<td><em>callbackData</em></td>\n<td>String</td>\n<td>Callback data sent through 'callbackData' field in fully featured SMS message</td>\n</tr>\n<tr>\n<td><em>price</em></td>\n<td>Price</td>\n<td>Sent SMS price.</td>\n</tr>\n<tr>\n<td><em>status</em></td>\n<td>Status</td>\n<td>Indicates whether the message is successfully sent, not sent, delivered, not delivered, waiting for delivery or any other possible status.</td>\n</tr>\n<tr>\n<td><em>error</em></td>\n<td>Error</td>\n<td>Indicates whether the error occurred during the query execution.</td>\n</tr>\n<tr>\n<td><em>entityId</em></td>\n<td>String</td>\n<td>Entity ID used to send the message.</td>\n</tr>\n<tr>\n<td><em>applicationId</em></td>\n<td>String</td>\n<td>Application ID used to send the message.</td>\n</tr>\n<tr>\n<td><em>campaignReferenceId</em></td>\n<td>String</td>\n<td>ID of the campaign sent in the message.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"price\">Price</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>pricePerMessage</em></td>\n<td>BigDecimal</td>\n<td>Price per one SMS.</td>\n</tr>\n<tr>\n<td><em>currency</em></td>\n<td>String</td>\n<td>The currency in which the price is expressed.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"status\">Status</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>groupId</em></td>\n<td>int</td>\n<td>Status group ID.</td>\n</tr>\n<tr>\n<td><em>groupName</em></td>\n<td>String</td>\n<td>Status group name.</td>\n</tr>\n<tr>\n<td><em>id</em></td>\n<td>int</td>\n<td>Status ID.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>Status name.</td>\n</tr>\n<tr>\n<td><em>description</em></td>\n<td>String</td>\n<td>Human readable description of the status.</td>\n</tr>\n<tr>\n<td><em>action</em></td>\n<td>String</td>\n<td>Action that should be taken to eliminate the error.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"error\">Error</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>groupId</em></td>\n<td>int</td>\n<td>Error group ID.</td>\n</tr>\n<tr>\n<td><em>groupName</em></td>\n<td>String</td>\n<td>Error group name.</td>\n</tr>\n<tr>\n<td><em>id</em></td>\n<td>int</td>\n<td>Error ID.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>Error name.</td>\n</tr>\n<tr>\n<td><em>description</em></td>\n<td>String</td>\n<td>Human readable description of the error.</td>\n</tr>\n<tr>\n<td><em>permanent</em></td>\n<td>boolean</td>\n<td>Tells if the error is permanent.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["sms","1","reports"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"ff6da4fd-f864-4e88-9aed-a114ea9c08aa","name":"Delivery reports","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":"{\n  \"bulkId\": \"BULK-ID-123-xyz\",\n  \"messageId\": \"MESSAGE-ID-123-xyz\",\n  \"limit\": \"2\"\n}\n","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/sms/1/reports"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"476"},{"key":"Date","value":"Sat, 11 Mar 2023 10:56:52 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1678532212874616827"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"results\": [\n        {\n            \"messageId\": \"37853196998703536443\",\n            \"to\": \"4670123456\",\n            \"from\": \"VHD\",\n            \"sentAt\": \"2023-03-11T10:52:50.035+0000\",\n            \"doneAt\": \"2023-03-11T10:53:00.202+0000\",\n            \"smsCount\": 1,\n            \"mccMnc\": \"null\",\n            \"price\": {\n                \"pricePerMessage\": 1,\n                \"currency\": \"SEK\"\n            },\n            \"status\": {\n                \"groupId\": 3,\n                \"groupName\": \"DELIVERED\",\n                \"id\": 5,\n                \"name\": \"DELIVERED_TO_HANDSET\",\n                \"description\": \"Message delivered to handset\"\n            },\n            \"error\": {\n                \"groupId\": 0,\n                \"groupName\": \"OK\",\n                \"id\": 0,\n                \"name\": \"NO_ERROR\",\n                \"description\": \"No Error\",\n                \"permanent\": false\n            }\n        }\n    ]\n}"}],"_postman_id":"e2aa6a08-57d7-4c31-97ed-3e09705be486"},{"name":"Sent messages logs (API v1)","event":[{"listen":"test","script":{"exec":["// Parse the response body","var responseBody = pm.response.json();","","// Test if status code is 200","pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});","","// Test if 'results' array exists in the response","pm.test(\"Response contains 'results' array\", function () {","    pm.expect(responseBody).to.have.property('results').that.is.an('array');","","    // Iterate over each message in the 'results' array","    responseBody.results.forEach(function (message, index) {","        // Test the message in the 'results' array","    ","    });","});","",""],"type":"text/javascript","packages":{}}}],"id":"90c16f9a-105e-4bf7-8cd0-bca15a193e3f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/sms/1/logs","description":"<blockquote>\n<p><strong>Previous version (v1).</strong> New integrations should use <strong>Sent messages logs (API v3)</strong> (`GET /sms/3/logs`), which uses the same field names as <strong>Send SMS messages (API v3)</strong>.</p>\n</blockquote>\n<p>Use this method for displaying logs for example in the user interface. Available are the logs for the last 48 hours and you can only retrieve maximum of 1000 logs per call.</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>from</td>\n<td>String</td>\n<td>The sender ID which can be alphanumeric or numeric.</td>\n</tr>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the request.</td>\n</tr>\n<tr>\n<td><em>messageId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the message sent.</td>\n</tr>\n<tr>\n<td>generalStatus</td>\n<td>Array of Strings</td>\n<td>Sent message status. Possible values: ACCEPTED, PENDING, UNDELIVERABLE, DELIVERED, REJECTED, EXPIRED.</td>\n</tr>\n<tr>\n<td><em>to</em></td>\n<td>String</td>\n<td>The message destination address.</td>\n</tr>\n<tr>\n<td><em>from</em></td>\n<td>String</td>\n<td>Sender ID that can be alphanumeric or numeric.</td>\n</tr>\n<tr>\n<td><em>text</em></td>\n<td>String</td>\n<td>Text of the message that was sent.</td>\n</tr>\n<tr>\n<td><em>sentAt</em></td>\n<td>Date</td>\n<td>Tells when the SMS was sent. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSSZ</code>.</td>\n</tr>\n<tr>\n<td>limit</td>\n<td>Integer</td>\n<td>Maximum number of messages to include in logs. If not set, the latest 50 records are returned. Maximum limit value is 1000 and you can only access logs for the last 48h. If you want to fetch more than 1000 logs allowed per call, use sentBefore and sentUntil to retrieve them in pages.</td>\n</tr>\n<tr>\n<td>mcc</td>\n<td>String</td>\n<td>Mobile Country Code</td>\n</tr>\n<tr>\n<td>mnc</td>\n<td>String</td>\n<td>Mobile Network Code. Requires <code>mcc</code> when used.</td>\n</tr>\n<tr>\n<td><em>applicationId</em></td>\n<td>String</td>\n<td>Application ID used to send the message.</td>\n</tr>\n<tr>\n<td><em>entityId</em></td>\n<td>String</td>\n<td>Entity ID used to send the message.</td>\n</tr>\n<tr>\n<td><em>campaignReferenceId</em></td>\n<td>Array of Strings</td>\n<td>Campaign ID(s), comma-separated.</td>\n</tr>\n<tr>\n<td>sentSince</td>\n<td>String</td>\n<td>Example: sentSince=2015-02-22T17:42:05.390+0100  <br />The logs will only include messages sent after this date. Use it together with sentUntil to return a time range or if you want to fetch more than 1000 logs allowed per call. Has the following format: yyyy-MM-dd'T'HH:mm:ss.SSSZ.</td>\n</tr>\n<tr>\n<td>sentUntil</td>\n<td>String</td>\n<td>Example: sentUntil=2015-02-22T19:42:05.390+0100  <br />The logs will only include messages sent before this date. Use it together with sentBefore to return a time range or if you want to fetch more than 1000 logs allowed per call. Has the following format: yyyy-MM-dd'T'HH:mm:ss.SSSZ.</td>\n</tr>\n<tr>\n<td>mcc</td>\n<td>String</td>\n<td>Mobile Country Code.</td>\n</tr>\n<tr>\n<td>mnc</td>\n<td>String</td>\n<td>Mobile Network Code.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>If successful, the response header HTTP status code will be <code>200 OK</code> and the message logs will be returned. If you try to send a message without authorization, you will get a response with HTTP status code <code>401 Unauthorized</code>.</p>\n<p>If you are using this method too many times in a short period, you will get status code <code>429 Too Many Requests</code>. This prevents misusing logs in cases where reports would be more appropriate.</p>\n<h3 id=\"smslogsresponse\">SMSLogsResponse</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results</em></td>\n<td>SentSMSLog</td>\n<td>Collection of logs.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"sentsmslog\">SentSMSLog</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the request.</td>\n</tr>\n<tr>\n<td><em>messageId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the message sent.</td>\n</tr>\n<tr>\n<td><em>to</em></td>\n<td>String</td>\n<td>The message destination address.</td>\n</tr>\n<tr>\n<td><em>from</em></td>\n<td>String</td>\n<td>Sender ID that can be alphanumeric or numeric.</td>\n</tr>\n<tr>\n<td><em>text</em></td>\n<td>String</td>\n<td>Text of the message that was sent.</td>\n</tr>\n<tr>\n<td><em>sentAt</em></td>\n<td>Date</td>\n<td>Tells when the SMS was sent. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSSZ</code>.</td>\n</tr>\n<tr>\n<td><em>doneAt</em></td>\n<td>Date</td>\n<td>Tells when the SMS was finished processing by our system (ie. delivered to destination, delivered to destination network, etc.)</td>\n</tr>\n<tr>\n<td><em>smsCount</em></td>\n<td>int</td>\n<td>The number of sent message segments.</td>\n</tr>\n<tr>\n<td><em>mccmnc</em></td>\n<td>String</td>\n<td>Mobile country and network codes.</td>\n</tr>\n<tr>\n<td><em>price</em></td>\n<td>Price</td>\n<td>Sent SMS price.</td>\n</tr>\n<tr>\n<td><em>status</em></td>\n<td>Status</td>\n<td>Indicates whether the message is successfully sent, not sent, delivered, not delivered, waiting for delivery or any other possible status.</td>\n</tr>\n<tr>\n<td><em>error</em></td>\n<td>Error</td>\n<td>Indicates whether the error occurred during the query execution.</td>\n</tr>\n<tr>\n<td><em>applicationId</em></td>\n<td>String</td>\n<td>Application ID used to send the message.</td>\n</tr>\n<tr>\n<td><em>entityId</em></td>\n<td>String</td>\n<td>Entity ID used to send the message.</td>\n</tr>\n<tr>\n<td><em>campaignReferenceId</em></td>\n<td>String</td>\n<td>ID of the campaign sent in the message.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"price\">Price</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>pricePerMessage</em></td>\n<td>BigDecimal</td>\n<td>Price per one SMS.</td>\n</tr>\n<tr>\n<td><em>currency</em></td>\n<td>String</td>\n<td>The currency in which the price is expressed.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"status\">Status</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>groupId</em></td>\n<td>int</td>\n<td>Status group ID.</td>\n</tr>\n<tr>\n<td><em>groupName</em></td>\n<td>String</td>\n<td>Status group name.</td>\n</tr>\n<tr>\n<td><em>id</em></td>\n<td>int</td>\n<td>Status ID.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>Status name.</td>\n</tr>\n<tr>\n<td><em>description</em></td>\n<td>String</td>\n<td>Human readable description of the status.</td>\n</tr>\n<tr>\n<td><em>action</em></td>\n<td>String</td>\n<td>Action that should be taken to eliminate the error.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"error\">Error</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>groupId</em></td>\n<td>int</td>\n<td>Error group ID.</td>\n</tr>\n<tr>\n<td><em>groupName</em></td>\n<td>String</td>\n<td>Error group name.</td>\n</tr>\n<tr>\n<td><em>id</em></td>\n<td>int</td>\n<td>Error ID.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>Error name.</td>\n</tr>\n<tr>\n<td><em>description</em></td>\n<td>String</td>\n<td>Human readable description of the error.</td>\n</tr>\n<tr>\n<td><em>permanent</em></td>\n<td>boolean</td>\n<td>Tells if the error is permanent.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["sms","1","logs"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"e3499e71-b4f8-4807-a0f8-2c2bcd5397bf","name":"Sent messages logs","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":"{\n  \"from\": \"VHD\",\n  \"bulkId\": \"BULK-ID-123-xyz\",\n  \"messageId\": \"MESSAGE-ID-123-xyz\",\n  \"limit\": \"2\"\n}\n\n","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/sms/1/logs"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"1632"},{"key":"Date","value":"Mon, 13 Mar 2023 15:05:04 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1678719904301745666"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"results\": [\n        {\n            \"bulkId\": \"BULK-ID-123-xyz\",\n            \"messageId\": \"37871984270837213776\",\n            \"to\": \"4670123456\",\n            \"from\": \"VHD\",\n            \"text\": \"Merhaba dünya\",\n            \"sentAt\": \"2023-03-13T15:04:02.714+0000\",\n            \"doneAt\": \"2023-03-13T15:04:02.848+0000\",\n            \"smsCount\": 1,\n            \"mccMnc\": \"24013\",\n            \"price\": {\n                \"pricePerMessage\": 1,\n                \"currency\": \"SEK\"\n            },\n            \"status\": {\n                \"groupId\": 2,\n                \"groupName\": \"UNDELIVERABLE\",\n                \"id\": 9,\n                \"name\": \"UNDELIVERABLE_NOT_DELIVERED\",\n                \"description\": \"Message sent not delivered\"\n            },\n            \"error\": {\n                \"groupId\": 1,\n                \"groupName\": \"HANDSET_ERRORS\",\n                \"id\": 1,\n                \"name\": \"EC_UNKNOWN_SUBSCRIBER\",\n                \"description\": \"Unknown Subscriber\",\n                \"permanent\": true\n            }\n        },\n        {\n            \"bulkId\": \"BULK-ID-123-xyz\",\n            \"messageId\": \"37871984270837213777\",\n            \"to\": \"4670123457\",\n            \"from\": \"VHD\",\n            \"text\": \"Hello Wolrd\",\n            \"sentAt\": \"2023-03-13T15:04:02.713+0000\",\n            \"doneAt\": \"2023-03-13T15:04:02.841+0000\",\n            \"smsCount\": 1,\n            \"mccMnc\": \"22802\",\n            \"price\": {\n                \"pricePerMessage\": 1,\n                \"currency\": \"SEK\"\n            },\n            \"status\": {\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 3,\n                \"name\": \"PENDING_WAITING_DELIVERY\",\n                \"description\": \"Message sent, waiting for delivery report\"\n            },\n            \"error\": {\n                \"groupId\": 0,\n                \"groupName\": \"OK\",\n                \"id\": 0,\n                \"name\": \"NO_ERROR\",\n                \"description\": \"No Error\",\n                \"permanent\": false\n            }\n        },\n        {\n            \"bulkId\": \"BULK-ID-123-xyz\",\n            \"messageId\": \"MESSAGE-ID-123-xyz\",\n            \"to\": \"4670123458\",\n            \"from\": \"VHD\",\n            \"text\": \"Merhaba dünya\",\n            \"sentAt\": \"2023-03-13T15:04:02.713+0000\",\n            \"doneAt\": \"2023-03-13T15:04:02.788+0000\",\n            \"smsCount\": 1,\n            \"mccMnc\": \"22801\",\n            \"price\": {\n                \"pricePerMessage\": 1,\n                \"currency\": \"SEK\"\n            },\n            \"status\": {\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 3,\n                \"name\": \"PENDING_WAITING_DELIVERY\",\n                \"description\": \"Message sent, waiting for delivery report\"\n            },\n            \"error\": {\n                \"groupId\": 0,\n                \"groupName\": \"OK\",\n                \"id\": 0,\n                \"name\": \"NO_ERROR\",\n                \"description\": \"No Error\",\n                \"permanent\": false\n            }\n        }\n    ]\n}"}],"_postman_id":"90c16f9a-105e-4bf7-8cd0-bca15a193e3f"},{"name":"{ Webhook } Receive outbound SMS message report (v3)","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","skip(\"This request only documents the message that VHD sends to YOUR server. It is not sent from here.\");"],"type":"text/javascript","packages":{}}}],"id":"869c94ef-17a1-458c-b6df-f0fe4b4537d1","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"results\": [\n    {\n      \"bulkId\": \"BULK-ID-123-xyz\",\n      \"price\": {\n        \"pricePerMessage\": 0.01,\n        \"currency\": \"EUR\"\n      },\n      \"status\": {\n        \"groupId\": 3,\n        \"groupName\": \"DELIVERED\",\n        \"id\": 5,\n        \"name\": \"DELIVERED_TO_HANDSET\",\n        \"description\": \"Message delivered to handset\"\n      },\n      \"error\": {\n        \"groupId\": 0,\n        \"groupName\": \"OK\",\n        \"id\": 0,\n        \"name\": \"NO_ERROR\",\n        \"description\": \"No Error\",\n        \"permanent\": false\n      },\n      \"messageId\": \"MESSAGE-ID-123-xyz\",\n      \"to\": \"41793026727\",\n      \"sender\": \"VHD\",\n      \"sentAt\": \"2019-11-09T16:00:00.000+0100\",\n      \"doneAt\": \"2019-11-09T16:00:00.000+0100\",\n      \"messageCount\": 1,\n      \"callbackData\": \"callbackData\",\n      \"platform\": {\n        \"entityId\": \"promotional-traffic-entity\",\n        \"applicationId\": \"marketing-automation-application\"\n      }\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://{yourDomain}/your/webhook/path","description":"<blockquote>\n<p><strong>Documentation only.</strong> This is the message that VHD sends to a URL on <strong>your</strong> server. It is skipped when you run the collection.</p>\n</blockquote>\n<p>Delivery report webhook for messages sent with <strong>Send SMS messages (API v3)</strong>. Set the callback URL with <code>messages[].webhooks.delivery.url</code> in the send request. Your server should reply <code>200</code> to confirm it accepted the callback. The default batch size is 100 reports per request.</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results</em></td>\n<td>Array of Objects</td>\n<td>Collection of delivery reports, one per message.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"results\">results[]</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>ID assigned to a request that messages multiple recipients or sends multiple messages.</td>\n</tr>\n<tr>\n<td><em>messageId</em></td>\n<td>String</td>\n<td>Unique message ID.</td>\n</tr>\n<tr>\n<td><em>to</em></td>\n<td>String</td>\n<td>Destination address.</td>\n</tr>\n<tr>\n<td><em>sender</em></td>\n<td>String</td>\n<td>Alphanumeric or numeric sender ID.</td>\n</tr>\n<tr>\n<td><em>sentAt</em></td>\n<td>Date</td>\n<td>When the message was sent. Format <code>yyyy-MM-dd'T'HH:mm:ss.SSSZ</code>.</td>\n</tr>\n<tr>\n<td><em>doneAt</em></td>\n<td>Date</td>\n<td>When processing of the message finished. Same format.</td>\n</tr>\n<tr>\n<td><em>messageCount</em></td>\n<td>Int</td>\n<td>Number of messages sent.</td>\n</tr>\n<tr>\n<td><em>mccMnc</em></td>\n<td>String</td>\n<td>Mobile country and network codes.</td>\n</tr>\n<tr>\n<td><em>callbackData</em></td>\n<td>String</td>\n<td>Callback data supplied when the message was sent.</td>\n</tr>\n<tr>\n<td><em>price</em></td>\n<td>Object</td>\n<td><code>pricePerMessage</code> (number) and <code>currency</code> (string).</td>\n</tr>\n<tr>\n<td><em>status</em></td>\n<td>Object</td>\n<td><code>groupId</code>, <code>groupName</code> (<code>ACCEPTED</code>, <code>PENDING</code>, <code>UNDELIVERABLE</code>, <code>DELIVERED</code>, <code>EXPIRED</code>, <code>REJECTED</code>), <code>id</code>, <code>name</code>, <code>description</code>, <code>action</code>.</td>\n</tr>\n<tr>\n<td><em>error</em></td>\n<td>Object</td>\n<td><code>groupId</code>, <code>groupName</code> (<code>OK</code>, <code>HANDSET_ERRORS</code>, <code>USER_ERRORS</code>, <code>OPERATOR_ERRORS</code>), <code>id</code>, <code>name</code>, <code>description</code>, <code>permanent</code> (Boolean).</td>\n</tr>\n<tr>\n<td><em>platform</em></td>\n<td>Object</td>\n<td><code>entityId</code> and <code>applicationId</code> used in the send request.</td>\n</tr>\n<tr>\n<td><em>campaignReferenceId</em></td>\n<td>String</td>\n<td>ID of the campaign included in the message.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Differences from the previous report format: <code>from</code> is now <code>sender</code>, <code>smsCount</code> is now <code>messageCount</code>, and <code>entityId</code>/<code>applicationId</code> are grouped under <code>platform</code>.</p>\n","urlObject":{"protocol":"https","path":["your","webhook","path"],"host":["{yourDomain}"],"query":[],"variable":[]}},"response":[{"id":"bbb911de-4dda-49aa-9975-dacd2abf14bf","name":"Receive outbound SMS message report Example","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"results\": [\n    {\n      \"bulkId\": \"BULK-ID-123-xyz\",\n      \"messageId\": \"MESSAGE-ID-123-xyz\",\n      \"to\": \"41793026727\",\n      \"sentAt\": \"2024-04-09T16:00:00.000+0000\",\n      \"doneAt\": \"2024-04-09T16:00:00.000+0000\",\n      \"smsCount\": 1,\n      \"price\": {\n        \"pricePerMessage\": 0.01,\n        \"currency\": \"EUR\"\n      },\n      \"status\": {\n        \"groupId\": 3,\n        \"groupName\": \"DELIVERED\",\n        \"id\": 5,\n        \"name\": \"DELIVERED_TO_HANDSET\",\n        \"description\": \"Message delivered to handset\"\n      },\n      \"error\": {\n        \"groupId\": 0,\n        \"groupName\": \"Ok\",\n        \"id\": 0,\n        \"name\": \"NO_ERROR\",\n        \"description\": \"No Error\",\n        \"permanent\": false\n      },\n      \"entityId\": \"promotional-traffic-entity\",\n      \"applicationId\": \"marketing-automation-application\"\n    },\n    {\n      \"bulkId\": \"BULK-ID-123-xyz\",\n      \"messageId\": \"12db39c3-7822-4e72-a3ec-c87442c0ffc5\",\n      \"to\": \"41793026834\",\n      \"sentAt\": \"2024-04-09T17:00:00.000+0000\",\n      \"doneAt\": \"2024-04-09T17:00:00.000+0000\",\n      \"smsCount\": 1,\n      \"price\": {\n        \"pricePerMessage\": 0.01,\n        \"currency\": \"EUR\"\n      },\n      \"status\": {\n        \"groupId\": 3,\n        \"groupName\": \"DELIVERED\",\n        \"id\": 5,\n        \"name\": \"DELIVERED_TO_HANDSET\",\n        \"description\": \"Message delivered to handset\"\n      },\n      \"error\": {\n        \"groupId\": 0,\n        \"groupName\": \"Ok\",\n        \"id\": 0,\n        \"name\": \"NO_ERROR\",\n        \"description\": \"No Error\",\n        \"permanent\": false\n      },\n      \"applicationId\": \"default\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://{yourDomain}/your/webhook/path"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 24 Apr 2024 09:13:08 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"21"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"1cce7a52-bef8-4ae7-b359-c5a59d8dce3f"},{"key":"x-amz-apigw-id","value":"WuT9iEEpIAMEZnA="},{"key":"X-Amzn-Trace-Id","value":"Root=1-6628cd23-288b6e3d11f852b86752e576;Parent=698c21fa7bb84c4d;Sampled=0;lineage=f4509577:0"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"Success\"\n}"}],"_postman_id":"869c94ef-17a1-458c-b6df-f0fe4b4537d1"},{"name":"{ Webhook } Receive outbound SMS message report (previous format)","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","skip(\"This request only documents the message that VHD sends to YOUR server. It is not sent from here.\");"],"type":"text/javascript","packages":{}}}],"id":"d7a347ec-50a8-4d55-a436-d1a750cb9e3a","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"results\": [\n    {\n      \"bulkId\": \"BULK-ID-123-xyz\",\n      \"messageId\": \"MESSAGE-ID-123-xyz\",\n      \"to\": \"41793026727\",\n      \"sentAt\": \"2024-04-09T16:00:00.000+0000\",\n      \"doneAt\": \"2024-04-09T16:00:00.000+0000\",\n      \"smsCount\": 1,\n      \"price\": {\n        \"pricePerMessage\": 0.01,\n        \"currency\": \"EUR\"\n      },\n      \"status\": {\n        \"groupId\": 3,\n        \"groupName\": \"DELIVERED\",\n        \"id\": 5,\n        \"name\": \"DELIVERED_TO_HANDSET\",\n        \"description\": \"Message delivered to handset\"\n      },\n      \"error\": {\n        \"groupId\": 0,\n        \"groupName\": \"Ok\",\n        \"id\": 0,\n        \"name\": \"NO_ERROR\",\n        \"description\": \"No Error\",\n        \"permanent\": false\n      },\n      \"entityId\": \"promotional-traffic-entity\",\n      \"applicationId\": \"marketing-automation-application\"\n    },\n    {\n      \"bulkId\": \"BULK-ID-123-xyz\",\n      \"messageId\": \"12db39c3-7822-4e72-a3ec-c87442c0ffc5\",\n      \"to\": \"41793026834\",\n      \"sentAt\": \"2024-04-09T17:00:00.000+0000\",\n      \"doneAt\": \"2024-04-09T17:00:00.000+0000\",\n      \"smsCount\": 1,\n      \"price\": {\n        \"pricePerMessage\": 0.01,\n        \"currency\": \"EUR\"\n      },\n      \"status\": {\n        \"groupId\": 3,\n        \"groupName\": \"DELIVERED\",\n        \"id\": 5,\n        \"name\": \"DELIVERED_TO_HANDSET\",\n        \"description\": \"Message delivered to handset\"\n      },\n      \"error\": {\n        \"groupId\": 0,\n        \"groupName\": \"Ok\",\n        \"id\": 0,\n        \"name\": \"NO_ERROR\",\n        \"description\": \"No Error\",\n        \"permanent\": false\n      },\n      \"applicationId\": \"default\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://{yourDomain}/your/webhook/path","description":"<blockquote>\n<p><strong>Documentation only.</strong> This is the message that VHD sends to a URL on <strong>your</strong> server. It is skipped when you run the collection.</p>\n</blockquote>\n<blockquote>\n<p>For messages sent with <strong>Send SMS messages (API v3)</strong>, see <strong>Receive outbound SMS message report (v3)</strong>.</p>\n</blockquote>\n<p>For every message you send, we offer the option to receive a delivery report. To use this feature, you should set up an endpoint to receive these reports. You can specify the endpoint when sending SMS. If you need assistance with this process, please contact <a href=\"https://mailto:support@vhdmedia.se\">support@vhdmedia.se</a>. Please note that the default number of delivery reports in a single request is 100.</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results</em></td>\n<td>Array of Objects</td>\n<td>Collection of reports, one per every message.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"array-\">Array [</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th></th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>Bulk ID.</td>\n</tr>\n<tr>\n<td><em>messageId</em></td>\n<td>String</td>\n<td>Message ID.</td>\n</tr>\n<tr>\n<td><em>to</em></td>\n<td>String</td>\n<td>Destination address.</td>\n</tr>\n<tr>\n<td><em>from</em></td>\n<td>String</td>\n<td>Sender ID that can be alphanumeric or numeric.</td>\n</tr>\n<tr>\n<td><em>sentAt</em></td>\n<td>Date</td>\n<td>Tells when the SMS was sent. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSSZ</code>.</td>\n</tr>\n<tr>\n<td><em>doneAt</em></td>\n<td>Date</td>\n<td>Tells when the SMS was finished processing by our system (ie. delivered to destination, delivered to destination network, etc.)</td>\n</tr>\n<tr>\n<td><em>smsCount</em></td>\n<td>Int</td>\n<td>Number of parts the sent SMS was split into.</td>\n</tr>\n<tr>\n<td><em>mccMnc</em></td>\n<td>String</td>\n<td>Mobile country and network codes.</td>\n</tr>\n<tr>\n<td><em>callbackData</em></td>\n<td>String</td>\n<td>Callback data sent through 'callbackData' field in fully featured SMS message</td>\n</tr>\n<tr>\n<td><em>price</em></td>\n<td>Object</td>\n<td>Sent SMS price.</td>\n</tr>\n<tr>\n<td><em>status</em></td>\n<td>Status</td>\n<td>Indicates whether the message is successfully sent, not sent, delivered, not delivered, waiting for delivery or any other possible status.</td>\n</tr>\n<tr>\n<td><em>error</em></td>\n<td>Error</td>\n<td>Indicates whether the error occurred during the query execution.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"price\">Price</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>pricePerMessage</em></td>\n<td>BigDecimal</td>\n<td>Price per one SMS.</td>\n</tr>\n<tr>\n<td><em>currency</em></td>\n<td>String</td>\n<td>The currency in which the price is expressed.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"status\">Status</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>groupId</em></td>\n<td>Int</td>\n<td>Status group ID.</td>\n</tr>\n<tr>\n<td><em>groupName</em></td>\n<td>String</td>\n<td>Status group name.</td>\n</tr>\n<tr>\n<td><em>id</em></td>\n<td>Int</td>\n<td>Status ID.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>Status name.</td>\n</tr>\n<tr>\n<td><em>description</em></td>\n<td>String</td>\n<td>Human readable description of the status.</td>\n</tr>\n<tr>\n<td><em>action</em></td>\n<td>String</td>\n<td>Action that should be taken to eliminate the error.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"error\">Error</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>groupId</em></td>\n<td>Int</td>\n<td>Error group ID.</td>\n</tr>\n<tr>\n<td><em>groupName</em></td>\n<td>String</td>\n<td>Error group name.</td>\n</tr>\n<tr>\n<td><em>id</em></td>\n<td>Int</td>\n<td>Error ID.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>Error name.</td>\n</tr>\n<tr>\n<td><em>description</em></td>\n<td>String</td>\n<td>Human readable description of the error.</td>\n</tr>\n<tr>\n<td><em>permanent</em></td>\n<td>Boolean</td>\n<td>Tells if the error is permanent.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id>]</h3>\n<h3 id=\"responses\">Responses</h3>\n<p><strong>200</strong></p>\n<p>Your server returns this code if it accepts the callback.</p>\n","urlObject":{"protocol":"https","path":["your","webhook","path"],"host":["{yourDomain}"],"query":[],"variable":[]}},"response":[{"id":"86b98d1a-4e10-452b-a9d8-eee1502296c4","name":"Receive outbound SMS message report Example","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"results\": [\n    {\n      \"bulkId\": \"BULK-ID-123-xyz\",\n      \"messageId\": \"MESSAGE-ID-123-xyz\",\n      \"to\": \"41793026727\",\n      \"sentAt\": \"2024-04-09T16:00:00.000+0000\",\n      \"doneAt\": \"2024-04-09T16:00:00.000+0000\",\n      \"smsCount\": 1,\n      \"price\": {\n        \"pricePerMessage\": 0.01,\n        \"currency\": \"EUR\"\n      },\n      \"status\": {\n        \"groupId\": 3,\n        \"groupName\": \"DELIVERED\",\n        \"id\": 5,\n        \"name\": \"DELIVERED_TO_HANDSET\",\n        \"description\": \"Message delivered to handset\"\n      },\n      \"error\": {\n        \"groupId\": 0,\n        \"groupName\": \"Ok\",\n        \"id\": 0,\n        \"name\": \"NO_ERROR\",\n        \"description\": \"No Error\",\n        \"permanent\": false\n      },\n      \"entityId\": \"promotional-traffic-entity\",\n      \"applicationId\": \"marketing-automation-application\"\n    },\n    {\n      \"bulkId\": \"BULK-ID-123-xyz\",\n      \"messageId\": \"12db39c3-7822-4e72-a3ec-c87442c0ffc5\",\n      \"to\": \"41793026834\",\n      \"sentAt\": \"2024-04-09T17:00:00.000+0000\",\n      \"doneAt\": \"2024-04-09T17:00:00.000+0000\",\n      \"smsCount\": 1,\n      \"price\": {\n        \"pricePerMessage\": 0.01,\n        \"currency\": \"EUR\"\n      },\n      \"status\": {\n        \"groupId\": 3,\n        \"groupName\": \"DELIVERED\",\n        \"id\": 5,\n        \"name\": \"DELIVERED_TO_HANDSET\",\n        \"description\": \"Message delivered to handset\"\n      },\n      \"error\": {\n        \"groupId\": 0,\n        \"groupName\": \"Ok\",\n        \"id\": 0,\n        \"name\": \"NO_ERROR\",\n        \"description\": \"No Error\",\n        \"permanent\": false\n      },\n      \"applicationId\": \"default\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://{yourDomain}/your/webhook/path"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 24 Apr 2024 09:13:08 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"21"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"1cce7a52-bef8-4ae7-b359-c5a59d8dce3f"},{"key":"x-amz-apigw-id","value":"WuT9iEEpIAMEZnA="},{"key":"X-Amzn-Trace-Id","value":"Root=1-6628cd23-288b6e3d11f852b86752e576;Parent=698c21fa7bb84c4d;Sampled=0;lineage=f4509577:0"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"Success\"\n}"}],"_postman_id":"d7a347ec-50a8-4d55-a436-d1a750cb9e3a"}],"id":"70424264-366c-4db8-8fff-69f797adcab4","description":"<p>Get delivery reports and logs of sent SMS, or receive delivery reports on your own server through a webhook. Use the v3 requests for new integrations; the v1 requests are kept for existing ones.</p>\n","_postman_id":"70424264-366c-4db8-8fff-69f797adcab4"},{"name":"MANAGE SCHEDULED SMS MESSAGES","item":[{"name":"Schedule an SMS message (API v3)","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","if (!(pm.environment.get(\"testNumber\") || \"\").trim()) { skip(\"testNumber is not set\"); }"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests for Schedule an SMS message (API v3).","pm.test(\"Status code is 200\", function () { pm.expect(pm.response.code).to.eql(200); });","pm.test(\"The scheduled message is accepted (it is canceled at the end of this flow)\", function () {","    var j = pm.response.json();","    pm.expect(j).to.have.property(\"bulkId\").that.is.a(\"string\");","    pm.expect(j.messages[0].status.groupName).to.not.be.oneOf([\"REJECTED\", \"UNDELIVERABLE\"]);","});","","var j = pm.response.json();","pm.environment.set(\"bulkId\", j.bulkId);"],"type":"text/javascript","packages":{}}}],"id":"3fec9ade-ea6e-4640-b8ef-606f2d1aa936","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"messages\": [\n    {\n      \"sender\": \"VHD\",\n      \"destinations\": [\n        {\n          \"to\": \"46731234567\"\n        }\n      ],\n      \"content\": {\n        \"text\": \"Scheduled VHD message\"\n      }\n    }\n  ],\n  \"options\": {\n    \"schedule\": {\n      \"sendAt\": \"{{sendAt}}\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/sms/3/messages","description":"<p>Schedule an SMS for later with <code>options.schedule.sendAt</code>. The <code>bulkId</code> of the request is saved in the environment variable <code>bulkId</code>, and the requests that follow act on it. The flow <strong>cancels</strong> the message at the end, so it is never sent.</p>\n<p>Send one or more SMS messages (text or binary) in a single request. This is the current version of the send API and replaces the v2 endpoints (<code>/sms/2/text/single</code>, <code>/sms/2/text/advanced</code>, <code>/sms/2/binary/advanced</code>), which remain available as legacy.</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>messages</em></td>\n<td>Array of Object</td>\n<td><strong>Required.</strong> One or more messages, sent under one bulk ID.</td>\n</tr>\n<tr>\n<td><em>options</em></td>\n<td>Object</td>\n<td>Options applied to all messages in the request.</td>\n</tr>\n</tbody>\n</table>\n</div><h6 id=\"messages\">messages[]</h6>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>sender</em></td>\n<td>String</td>\n<td>Alphanumeric or numeric sender ID.</td>\n</tr>\n<tr>\n<td><em>destinations</em></td>\n<td>Array of Object</td>\n<td><strong>Required.</strong> At least one recipient. Each has <code>to</code> (<strong>required</strong>, international format), <code>messageId</code> (your unique ID) and <code>networkId</code> (US/Canada only).</td>\n</tr>\n<tr>\n<td><em>content</em></td>\n<td>Object</td>\n<td><strong>Required.</strong> Text or binary content (see below).</td>\n</tr>\n<tr>\n<td><em>options</em></td>\n<td>Object</td>\n<td>Per-message options (see below).</td>\n</tr>\n<tr>\n<td><em>webhooks</em></td>\n<td>Object</td>\n<td>Delivery report configuration.</td>\n</tr>\n</tbody>\n</table>\n</div><h6 id=\"content-text\">content (text)</h6>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>text</em></td>\n<td>String</td>\n<td>Message body.</td>\n</tr>\n<tr>\n<td><em>transliteration</em></td>\n<td>Enum</td>\n<td><code>NONE</code>, <code>TURKISH</code>, <code>GREEK</code>, <code>CYRILLIC</code>, <code>SERBIAN_CYRILLIC</code>, <code>CENTRAL_EUROPEAN</code>, <code>BALTIC</code>, <code>NON_UNICODE</code>, <code>PORTUGUESE</code>, <code>COLOMBIAN</code>, <code>BULGARIAN_CYRILLIC</code>, <code>ALL</code>.</td>\n</tr>\n<tr>\n<td><em>language</em></td>\n<td>Object</td>\n<td><code>languageCode</code> (<code>NONE</code>, <code>TR</code>, <code>ES</code>, <code>PT</code>, <code>AUTODETECT</code>), <code>singleShift</code> (Boolean), <code>lockingShift</code> (Boolean).</td>\n</tr>\n</tbody>\n</table>\n</div><h6 id=\"content-binary\">content (binary)</h6>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>dataCoding</em></td>\n<td>Int</td>\n<td>Default <code>0</code> (GSM7); <code>8</code> for Unicode.</td>\n</tr>\n<tr>\n<td><em>esmClass</em></td>\n<td>Int</td>\n<td>Default <code>0</code>.</td>\n</tr>\n<tr>\n<td><em>hex</em></td>\n<td>String</td>\n<td>Hex bytes separated by spaces.</td>\n</tr>\n</tbody>\n</table>\n</div><h6 id=\"messagesoptions\">messages[].options</h6>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>validityPeriod</em></td>\n<td>Object</td>\n<td><code>amount</code> (<strong>required</strong>) and <code>timeUnit</code> (<code>SECONDS</code>, <code>MINUTES</code>, <code>HOURS</code>; default <code>MINUTES</code>). Maximum 48 hours.</td>\n</tr>\n<tr>\n<td><em>deliveryTimeWindow</em></td>\n<td>Object</td>\n<td><code>days</code> (<strong>required</strong>, weekday names), <code>from</code> and <code>to</code> (each with <code>hour</code> and <code>minute</code>). Times are UTC; <code>from</code> and <code>to</code> must be at least 1 hour apart.</td>\n</tr>\n<tr>\n<td><em>flash</em></td>\n<td>Boolean</td>\n<td>Send as flash SMS. Default <code>false</code>.</td>\n</tr>\n<tr>\n<td><em>campaignReferenceId</em></td>\n<td>String</td>\n<td>Campaign tracking ID.</td>\n</tr>\n<tr>\n<td><em>platform</em></td>\n<td>Object</td>\n<td><code>entityId</code>, <code>applicationId</code>.</td>\n</tr>\n<tr>\n<td><em>regional</em></td>\n<td>Object</td>\n<td><code>indiaDlt</code> (<code>principalEntityId</code> required, <code>contentTemplateId</code>, <code>telemarketerId</code>), <code>turkeyIys</code> (<code>recipientType</code> required: <code>BIREYSEL</code> or <code>TACIR</code>, <code>brandCode</code>), <code>southKorea</code> (<code>title</code>, <code>resellerCode</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><h6 id=\"messageswebhooks\">messages[].webhooks</h6>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>delivery.url</em></td>\n<td>String</td>\n<td>Delivery report callback URL.</td>\n</tr>\n<tr>\n<td><em>delivery.intermediateReport</em></td>\n<td>Boolean</td>\n<td>Receive intermediate reports in real time. Default <code>false</code>.</td>\n</tr>\n<tr>\n<td><em>delivery.notify</em></td>\n<td>Boolean</td>\n<td>If <code>false</code>, no delivery report is sent.</td>\n</tr>\n<tr>\n<td><em>contentType</em></td>\n<td>String</td>\n<td><code>application/json</code> or <code>application/xml</code>.</td>\n</tr>\n<tr>\n<td><em>callbackData</em></td>\n<td>String</td>\n<td>Up to 4000 characters, returned in the delivery report.</td>\n</tr>\n</tbody>\n</table>\n</div><h6 id=\"options-request-level\">options (request level)</h6>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>schedule.bulkId</em></td>\n<td>String</td>\n<td>Generated automatically if omitted.</td>\n</tr>\n<tr>\n<td><em>schedule.sendAt</em></td>\n<td>Date-time</td>\n<td>Format <code>yyyy-MM-dd'T'HH:mm:ss.SSSZ</code>, up to 180 days ahead.</td>\n</tr>\n<tr>\n<td><em>schedule.sendingSpeedLimit</em></td>\n<td>Object</td>\n<td><code>amount</code> (<strong>required</strong>) and <code>timeUnit</code> (<code>MINUTE</code>, <code>HOUR</code>, <code>DAY</code>; default <code>MINUTE</code>).</td>\n</tr>\n<tr>\n<td><em>tracking</em></td>\n<td>Object</td>\n<td><code>shortenUrl</code>, <code>trackClicks</code>, <code>removeProtocol</code> (Boolean), <code>trackingUrl</code>, <code>customDomain</code>.</td>\n</tr>\n<tr>\n<td><em>includeSmsCountInResponse</em></td>\n<td>Boolean</td>\n<td>Return <code>details.messageCount</code>. Not compatible with binary content.</td>\n</tr>\n<tr>\n<td><em>conversionTracking</em></td>\n<td>Object</td>\n<td><code>useConversionTracking</code> (Boolean), <code>conversionTrackingName</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>. Invalid requests return <code>400</code>, missing or invalid credentials <code>401</code>, and <code>403</code>/<code>500</code> for other errors.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>ID of the request, used to fetch delivery reports and logs.</td>\n</tr>\n<tr>\n<td><em>messages[].messageId</em></td>\n<td>String</td>\n<td>ID of the message.</td>\n</tr>\n<tr>\n<td><em>messages[].status</em></td>\n<td>Object</td>\n<td><code>groupId</code>, <code>groupName</code> (<code>ACCEPTED</code>, <code>PENDING</code>, <code>UNDELIVERABLE</code>, <code>DELIVERED</code>, <code>EXPIRED</code>, <code>REJECTED</code>), <code>id</code>, <code>name</code>, <code>description</code>, <code>action</code>.</td>\n</tr>\n<tr>\n<td><em>messages[].destination</em></td>\n<td>String</td>\n<td>Recipient.</td>\n</tr>\n<tr>\n<td><em>messages[].details.messageCount</em></td>\n<td>Int</td>\n<td>Number of message segments (when <code>includeSmsCountInResponse</code> is <code>true</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><p>Errors use a common format: <code>errorCode</code>, <code>description</code>, <code>action</code>, <code>violations[]</code> (<code>property</code>, <code>violation</code>).</p>\n","urlObject":{"protocol":"https","path":["sms","3","messages"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[],"_postman_id":"3fec9ade-ea6e-4640-b8ef-606f2d1aa936"},{"name":"Get scheduled SMS messages","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","if (!(pm.environment.get(\"bulkId\") || \"\")) { skip(\"bulkId is not set\"); } else {","waitUntil(function (cb) { api(\"GET\", \"/sms/1/bulks?bulkId=\" + pm.environment.get(\"bulkId\"), null, function (e, r) { cb(r && r.code === 200); }); }, 12, 3000, function () {});","}"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Test if status code is 200","pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});","","","// Get the bulkId from environment variables","var bulkId = pm.environment.get(\"bulkId\");","","// Test if bulkId exists in the query","pm.test(\"BulkId exists in the query\", function () {","    var queryParams = pm.request.url.query.toObject(); // Convert query parameters to an object","    pm.expect(queryParams).to.have.property(\"bulkId\", bulkId);","});","","","// Parse the response body as JSON","var responseBody = pm.response.json();","","// Test if bulkId exists in the response body","pm.test(\"BulkId exists in the response body\", function () {","    pm.expect(responseBody).to.have.property('bulkId');","});","","// Test if sendAt exists in the response body","pm.test(\"SendAt exists in the response body\", function () {","    pm.expect(responseBody).to.have.property('sendAt');","});",""],"type":"text/javascript","packages":{}}}],"id":"e6421c48-e9c6-4a80-ac77-5e28ec5c9895","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/sms/1/bulks?bulkId={{bulkId}}","description":"<p>See all scheduled messages and their scheduled date and time. To schedule a message, use the <code>sendAt</code> field when <a href=\"https://dev.vhdmedia.se/#164621bc-e3f0-430c-90b0-7fd363a5e797\">sending a message</a>.</p>\n<h3 id=\"query-parameters\">Query Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>bulkId</td>\n<td>String</td>\n<td>Required.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Response</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>bulkId</td>\n<td>string</td>\n<td>Unique ID assigned to the request if messaging multiple recipients or sending multiple messages via a single API request.</td>\n</tr>\n<tr>\n<td>sendAt</td>\n<td>string</td>\n<td>Date and time when the messages are scheduled to be sent. Format <code>yyyy-MM-dd'T'HH:mm:ss.SSSZ</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Errors use the <code>requestError.serviceException</code> format. <code>404 NOT_FOUND</code> means the bulk was not found.</p>\n","urlObject":{"protocol":"https","path":["sms","1","bulks"],"host":["go2","vhdmedia","se"],"query":[{"description":{"content":"<p>Required. The ID of the bulk, returned when the messages were sent.</p>\n","type":"text/plain"},"key":"bulkId","value":"{{bulkId}}"}],"variable":[]}},"response":[{"id":"999f5383-d401-4f8e-a3d4-99bc8b36359b","name":"Get scheduled SMS messages","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/sms/1/bulks?bulkId=BULK-ID-VHD","protocol":"https","host":["go2","vhdmedia","se"],"path":["sms","1","bulks"],"query":[{"key":"bulkId","value":"BULK-ID-VHD"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"vary","value":"Origin"},{"key":"vary","value":"Access-Control-Request-Method"},{"key":"vary","value":"Access-Control-Request-Headers"},{"key":"access-control-allow-origin","value":"*"},{"key":"access-control-allow-methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"access-control-allow-headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"content-type","value":"application/json;charset=UTF-8"},{"key":"content-length","value":"64"},{"key":"date","value":"Fri, 01 Mar 2024 09:46:04 GMT"},{"key":"server","value":"SMS API"},{"key":"x-request-id","value":"1709286364762597225"},{"key":"strict-transport-security","value":"max-age=31536000; includeSubDomains; preload;"},{"key":"connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"bulkId\": \"BULK-ID-VHD\",\n    \"sendAt\": \"2024-03-02T09:34:00.000+0000\"\n}"}],"_postman_id":"e6421c48-e9c6-4a80-ac77-5e28ec5c9895"},{"name":"Get scheduled SMS messages status","event":[{"listen":"test","script":{"exec":["// Test if status code is 200","pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});","","","// Get the bulkId from environment variables","var bulkId = pm.environment.get(\"bulkId\");","","// Test if bulkId exists in the query","pm.test(\"BulkId exists in the query\", function () {","    var queryParams = pm.request.url.query.toObject(); // Convert query parameters to an object","    pm.expect(queryParams).to.have.property(\"bulkId\", bulkId);","});","","","// Parse the response body as JSON","var responseBody = pm.response.json();","","// Test if bulkId exists in the response body","pm.test(\"BulkId exists in the response body\", function () {","    pm.expect(responseBody).to.have.property('bulkId');","});","","// Test if sendAt exists in the response body","pm.test(\"status exists in the response body\", function () {","    pm.expect(responseBody).to.have.property('status');","});",""],"type":"text/javascript","packages":{}}}],"id":"8982ca15-0790-4a13-861b-b7530a598a32","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[],"url":"https://go2.vhdmedia.se/sms/1/bulks/status?bulkId={{bulkId}}","description":"<p>See the status of scheduled messages. To schedule a message, use the <code>sendAt</code> field when <a href=\"https://dev.vhdmedia.se/#164621bc-e3f0-430c-90b0-7fd363a5e797\">sending a message</a>.</p>\n<p><a href=\"https://dev.vhdmedia.se/#01731fa3-3ed6-47ca-9967-0f704e39e81f\">Learn more about SMS channel and use cases</a></p>\n<h3 id=\"query-parameters\">Query Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>bulkId</td>\n<td>String</td>\n<td>Required.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>bulkId</td>\n<td>string</td>\n<td>Required  <br />  <br />Unique ID assigned to the request if messaging multiple recipients or sending multiple messages via a single API request.</td>\n</tr>\n<tr>\n<td>status</td>\n<td>string</td>\n<td>Enum: \"PENDING\" \"PAUSED\" \"PROCESSING\" \"CANCELED\" \"FINISHED\" \"FAILED\"  <br />The status of the message(s).</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["sms","1","bulks","status"],"host":["go2","vhdmedia","se"],"query":[{"description":{"content":"<p>Required. The ID of the bulk, returned when the messages were sent.</p>\n","type":"text/plain"},"key":"bulkId","value":"{{bulkId}}"}],"variable":[]}},"response":[{"id":"c42f4b5c-24b0-42ef-b231-52d7de6ecb24","name":"Get scheduled SMS messages status","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://go2.vhdmedia.se/sms/1/bulks/status?bulkId=BULK-ID-VHD","protocol":"https","host":["go2","vhdmedia","se"],"path":["sms","1","bulks","status"],"query":[{"key":"bulkId","value":"BULK-ID-VHD"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"vary","value":"Origin"},{"key":"vary","value":"Access-Control-Request-Method"},{"key":"vary","value":"Access-Control-Request-Headers"},{"key":"content-type","value":"application/json;charset=UTF-8"},{"key":"content-length","value":"43"},{"key":"x-http2-stream-id","value":"843"},{"key":"server","value":"SMS API"},{"key":"x-request-id","value":"1709299328571290828"},{"key":"strict-transport-security","value":"max-age=31536000; includeSubDomains; preload;"},{"key":"connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"bulkId\": \"BULK-ID-VHD\",\n    \"status\": \"PENDING\"\n}"}],"_postman_id":"8982ca15-0790-4a13-861b-b7530a598a32"},{"name":"Update scheduled SMS messages status","event":[{"listen":"prerequest","script":{"exec":["// A bulk cannot be set to PAUSED when it is already PAUSED. If it is paused now,","// resume it first, so this request can pause it again and every run ends in PAUSED.","var bulk = pm.environment.get(\"bulkId\");","var base = \"https://go2.vhdmedia.se/sms/1/bulks/status?bulkId=\" + encodeURIComponent(bulk);","var headers = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\" };","pm.sendRequest({ url: base, method: \"GET\", header: headers }, function (err, res) {","    if (err || res.code !== 200) { return; }","    var json = res.json();","    var current = json.status;","    if (current === \"PAUSED\") {","        pm.sendRequest({","            url: base, method: \"PUT\",","            header: Object.assign({ \"Content-Type\": \"application/json\" }, headers),","            body: { mode: \"raw\", raw: JSON.stringify({ status: \"PENDING\" }) }","        }, function () {});","    }","});",""],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Test if status code is 200","pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});","","// Get the bulkId from environment variables","var bulkId = pm.environment.get(\"bulkId\");","","// Test if bulkId exists in the query","pm.test(\"BulkId exists in the query\", function () {","    var queryParams = pm.request.url.query.toObject(); // Convert query parameters to an object","    pm.expect(queryParams).to.have.property(\"bulkId\", bulkId);","});","","// Parse the request body","var requestBody = pm.request.body;","","// Extract the status from the request body","var status;","try {","    status = JSON.parse(requestBody.raw).status;","} catch (error) {","    console.log(\"Error parsing request body as JSON:\", error);","}","","// Test if status exists in the request body","pm.test(\"Status exists in the request body\", function () {","    pm.expect(status).to.exist;","});","","// Test if status is one of the expected values","pm.test(\"Status is one of the expected values\", function () {","    var expectedStatusValues = [\"PENDING\", \"PAUSED\", \"PROCESSING\", \"CANCELED\", \"FINISHED\", \"FAILED\"];","    pm.expect(expectedStatusValues).to.include(status);","});","","// Test if bulkId exists in the response body","pm.test(\"BulkId exists in the response body\", function () {","    var responseBody = pm.response.json();","    pm.expect(responseBody).to.have.property(\"bulkId\");","});",""],"type":"text/javascript","packages":{}}}],"id":"3cb3e43f-f73c-4fde-af87-fd4fb6918678","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"status\": \"PAUSED\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/sms/1/bulks/status?bulkId={{bulkId}}","description":"<p>Change the status or completely cancel sending of scheduled messages.. To schedule a message, use the <code>sendAt</code> field when <a href=\"https://dev.vhdmedia.se/#164621bc-e3f0-430c-90b0-7fd363a5e797\">sending a message</a>.</p>\n<p><a href=\"https://dev.vhdmedia.se/#01731fa3-3ed6-47ca-9967-0f704e39e81f\">Learn more about SMS channel and use cases<br /><br /></a>Query Parameters</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>bulkId</td>\n<td>String</td>\n<td>Required.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>status</td>\n<td>string</td>\n<td>Required  <br />  <br />Enum: \"PENDING\" \"PAUSED\" \"PROCESSING\" \"CANCELED\" \"FINISHED\" \"FAILED\"  <br />The status of the message(s).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>bulkId</td>\n<td>string</td>\n<td>Required  <br />  <br />Unique ID assigned to the request if messaging multiple recipients or sending multiple messages via a single API request.</td>\n</tr>\n<tr>\n<td>status</td>\n<td>string</td>\n<td>Enum: \"PENDING\" \"PAUSED\" \"PROCESSING\" \"CANCELED\" \"FINISHED\" \"FAILED\"  <br />The status of the message(s).</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["sms","1","bulks","status"],"host":["go2","vhdmedia","se"],"query":[{"description":{"content":"<p>Required. The ID of the bulk, returned when the messages were sent.</p>\n","type":"text/plain"},"key":"bulkId","value":"{{bulkId}}"}],"variable":[]}},"response":[{"id":"b74066d4-8d42-4e6b-af6f-3de861b358be","name":"Update scheduled SMS messages status","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"status\": \"PAUSED\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/sms/1/bulks/status?bulkId=BULK-ID-VHD","protocol":"https","host":["go2","vhdmedia","se"],"path":["sms","1","bulks","status"],"query":[{"key":"bulkId","value":"BULK-ID-VHD"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"vary","value":"Origin"},{"key":"vary","value":"Access-Control-Request-Method"},{"key":"vary","value":"Access-Control-Request-Headers"},{"key":"access-control-allow-origin","value":"*"},{"key":"access-control-allow-methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"access-control-allow-headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"content-type","value":"application/json;charset=UTF-8"},{"key":"content-length","value":"42"},{"key":"date","value":"Fri, 01 Mar 2024 13:52:11 GMT"},{"key":"server","value":"SMS API"},{"key":"x-request-id","value":"1709301131525486827"},{"key":"strict-transport-security","value":"max-age=31536000; includeSubDomains; preload;"},{"key":"connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"bulkId\": \"BULK-ID-VHD\",\n    \"status\": \"PAUSED\"\n}"}],"_postman_id":"3cb3e43f-f73c-4fde-af87-fd4fb6918678"},{"name":"Reschedule SMS messages","event":[{"listen":"prerequest","script":{"exec":["","// Get the current value of the sendAt environment variable","var currentSendAt = pm.environment.get(\"sendAt\");","","// Convert the currentSendAt string to a Date object","var sendAtDate = new Date(currentSendAt);","","// Add 10 minutes to the sendAtDate","sendAtDate.setMinutes(sendAtDate.getMinutes() + 10);","","// Format the date and time as required","var year = sendAtDate.getUTCFullYear();","var month = ('0' + (sendAtDate.getUTCMonth() + 1)).slice(-2);","var day = ('0' + sendAtDate.getUTCDate()).slice(-2);","var hours = ('0' + sendAtDate.getUTCHours()).slice(-2);","var minutes = ('0' + sendAtDate.getUTCMinutes()).slice(-2);","var seconds = ('0' + sendAtDate.getUTCSeconds()).slice(-2);","","// Construct the formatted string for sendAt","var newSendAt = year + '-' + month + '-' + day + 'T' + hours + ':' + minutes + ':' + seconds + '.000+0000';","","// Set the new sendAt value as an environment variable","pm.environment.set(\"sendAt\", newSendAt);",""],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Test if status code is 200","pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});","","// Get the bulkId from environment variables","var bulkId = pm.environment.get(\"bulkId\");","","// Test if bulkId exists in the query","pm.test(\"BulkId exists in the query\", function () {","    var queryParams = pm.request.url.query.toObject(); // Convert query parameters to an object","    pm.expect(queryParams).to.have.property(\"bulkId\", bulkId);","});","","","// Parse the response body as JSON","var responseBody = pm.response.json();","","// Test if sendAt exists in the response body","pm.test(\"SendAt exists in the response body\", function () {","    pm.expect(responseBody).to.have.property('sendAt');","});",""],"type":"text/javascript","packages":{}}}],"id":"26be6aed-91b8-41fa-a60c-230884112523","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n  \"sendAt\": \"{{sendAt}}\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/sms/1/bulks?bulkId={{bulkId}}","description":"<blockquote>\n<p><strong>Pause first.</strong> A scheduled bulk can only be rescheduled while its status is <code>PAUSED</code>. Call <strong>Update scheduled SMS messages status</strong> with <code>{\"status\": \"PAUSED\"}</code> first; otherwise the request fails (for example <code>409 Conflict</code> for SMS or <code>404 Not Found</code> for email). Set the status back to <code>PENDING</code> to resume sending.</p>\n</blockquote>\n<p>Change the date and time of already scheduled messages. To schedule a message, use the <code>sendAt</code> field when <a href=\"https://dev.vhdmedia.se/#164621bc-e3f0-430c-90b0-7fd363a5e797\">sending a message</a>.</p>\n<p>Query Parameters</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>bulkId</td>\n<td>String</td>\n<td>Required.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td></td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td>sendAt</td>\n<td>string</td>\n<td>Date and time when the message is to be sent. Used for scheduled SMS (see Scheduled SMS endpoints for more details). Has the following format: yyyy-MM-dd'T'HH:mm:ss.SSSZ, and can only be scheduled for no later than 180 days in advance.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Response</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>bulkId</td>\n<td>string</td>\n<td>Required  <br />  <br />Unique ID assigned to the request if messaging multiple recipients or sending multiple messages via a single API request.</td>\n</tr>\n<tr>\n<td>sendAt</td>\n<td>string</td>\n<td>Date and time when the message is to be sent. Used for scheduled SMS (see Scheduled SMS endpoints for more details). Has the following format: yyyy-MM-dd'T'HH:mm:ss.SSSZ, and can only be scheduled for no later than 180 days in advance.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["sms","1","bulks"],"host":["go2","vhdmedia","se"],"query":[{"description":{"content":"<p>Required. The ID of the bulk, returned when the messages were sent.</p>\n","type":"text/plain"},"key":"bulkId","value":"{{bulkId}}"}],"variable":[]}},"response":[{"id":"9a49d7d7-2b42-4557-a9c6-012997c37557","name":"Reschedule SMS messages","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n  \"sendAt\": \"2024-03-25T16:00:00.000+0000\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/sms/1/bulks?bulkId=BULK-ID-VHD","protocol":"https","host":["go2","vhdmedia","se"],"path":["sms","1","bulks"],"query":[{"key":"bulkId","value":"BULK-ID-VHD"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"vary","value":"Origin"},{"key":"vary","value":"Access-Control-Request-Method"},{"key":"vary","value":"Access-Control-Request-Headers"},{"key":"access-control-allow-origin","value":"*"},{"key":"access-control-allow-methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"access-control-allow-headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"content-type","value":"application/json;charset=UTF-8"},{"key":"content-length","value":"64"},{"key":"date","value":"Fri, 01 Mar 2024 10:05:33 GMT"},{"key":"server","value":"SMS API"},{"key":"x-request-id","value":"1709287533273818227"},{"key":"strict-transport-security","value":"max-age=31536000; includeSubDomains; preload;"},{"key":"connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"bulkId\": \"BULK-ID-VHD\",\n    \"sendAt\": \"2024-03-25T16:00:00.000+0000\"\n}"}],"_postman_id":"26be6aed-91b8-41fa-a60c-230884112523"},{"name":"Cancel the scheduled SMS messages","event":[{"listen":"prerequest","script":{"exec":["// A bulk cannot be set to PAUSED when it is already PAUSED. If it is paused now,","// resume it first, so this request can pause it again and every run ends in PAUSED.","var bulk = pm.environment.get(\"bulkId\");","var base = \"https://go2.vhdmedia.se/sms/1/bulks/status?bulkId=\" + encodeURIComponent(bulk);","var headers = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\" };","pm.sendRequest({ url: base, method: \"GET\", header: headers }, function (err, res) {","    if (err || res.code !== 200) { return; }","    var json = res.json();","    var current = json.status;","    if (current === \"PAUSED\") {","        pm.sendRequest({","            url: base, method: \"PUT\",","            header: Object.assign({ \"Content-Type\": \"application/json\" }, headers),","            body: { mode: \"raw\", raw: JSON.stringify({ status: \"PENDING\" }) }","        }, function () {});","    }","});",""],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests for Cancel the scheduled SMS messages.","pm.test(\"Status code is 200\", function () { pm.expect(pm.response.code).to.eql(200); });","pm.test(\"The bulk is canceled, so nothing is ever sent\", function () { pm.expect(pm.response.json().status).to.eql(\"CANCELED\"); });"],"type":"text/javascript","packages":{}}}],"id":"f1372fc3-7d0d-4b2b-a8b3-e96e82466d5f","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n  \"status\": \"CANCELED\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/sms/1/bulks/status?bulkId={{bulkId}}","description":"<p>Cancel a scheduled bulk so the messages are never sent.</p>\n<p>Change the status or completely cancel sending of scheduled messages.. To schedule a message, use the <code>sendAt</code> field when <a href=\"https://dev.vhdmedia.se/#164621bc-e3f0-430c-90b0-7fd363a5e797\">sending a message</a>.</p>\n<p><a href=\"https://dev.vhdmedia.se/#01731fa3-3ed6-47ca-9967-0f704e39e81f\">Learn more about SMS channel and use cases<br /><br /></a>Query Parameters</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>bulkId</td>\n<td>String</td>\n<td>Required.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>status</td>\n<td>string</td>\n<td>Required  <br />  <br />Enum: \"PENDING\" \"PAUSED\" \"PROCESSING\" \"CANCELED\" \"FINISHED\" \"FAILED\"  <br />The status of the message(s).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>bulkId</td>\n<td>string</td>\n<td>Required  <br />  <br />Unique ID assigned to the request if messaging multiple recipients or sending multiple messages via a single API request.</td>\n</tr>\n<tr>\n<td>status</td>\n<td>string</td>\n<td>Enum: \"PENDING\" \"PAUSED\" \"PROCESSING\" \"CANCELED\" \"FINISHED\" \"FAILED\"  <br />The status of the message(s).</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["sms","1","bulks","status"],"host":["go2","vhdmedia","se"],"query":[{"description":{"content":"<p>Required. The ID of the bulk, returned when the messages were sent.</p>\n","type":"text/plain"},"key":"bulkId","value":"{{bulkId}}"}],"variable":[]}},"response":[],"_postman_id":"f1372fc3-7d0d-4b2b-a8b3-e96e82466d5f"}],"id":"ad2ab45b-c03b-4b55-8754-b9ed639b17a4","description":"<p>View, reschedule, pause, or cancel SMS that were scheduled with the <code>sendAt</code> field. Each request needs the <code>bulkId</code> returned when the messages were sent.</p>\n<blockquote>\n<p><strong>Running these requests.</strong> The flow schedules its own message, pauses and reschedules it, and cancels it at the end. No setup is needed, and nothing is ever sent.</p>\n</blockquote>\n","_postman_id":"ad2ab45b-c03b-4b55-8754-b9ed639b17a4"}],"id":"f7d8bad5-7943-4497-acce-f0c89b29d0ed","description":"<p>Short Message Service (SMS) boasts the broadest reach and coverage among messaging services. It facilitates communication to and from any mobile device worldwide, without the need for a data connection.</p>\n","_postman_id":"f7d8bad5-7943-4497-acce-f0c89b29d0ed"},{"name":"VOICE","item":[{"name":"VOICE MESSAGES","item":[{"name":"Send single voice message","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","if (pm.environment.get(\"runVoiceCalls\") !== \"true\") { skip(\"runVoiceCalls is not \\\"true\\\" in the environment, so no call is placed\"); }","else if (!((pm.environment.get(\"testVoiceNumber\") || \"\").trim() || (pm.environment.get(\"testNumber\") || \"\").trim())) { skip(\"testVoiceNumber (or testNumber) is not set\"); }"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"bulkId\", \"messages\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","","pm.test(\"'messages' is an array\", function () {","    pm.expect(responseBody[\"messages\"]).to.be.an('array');","});"],"type":"text/javascript","packages":{}}}],"id":"394d4801-b7d0-4598-b607-f3f19dfd1a48","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"text\": \"Test Voice message.\",\n  \"language\": \"en\",\n  \"voice\": {\n    \"gender\": \"female\",\n    \"name\": \"Joanna\"\n  },\n  \"from\": \"46700000000\",\n  \"to\": \"46731234567\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/tts/3/single","description":"<blockquote>\n<p><strong>This request places a real phone call</strong> to your <code>testNumber</code>. It runs only when the environment variable <code>runVoiceCalls</code> is <code>true</code>; otherwise it is skipped.</p>\n</blockquote>\n<blockquote>\n<p><strong>A call can be accepted and still not be placed.</strong> The API answers <code>200</code> with status <code>PENDING</code> when it accepts the request. The final result appears later in the logs and delivery reports. For example <code>REJECTED_DND</code> means the number is on a do-not-disturb list, so the call was never connected. Check <strong>Voice message logs</strong> (filter with <code>bulkId</code>) to see what happened to the call.</p>\n</blockquote>\n<p>This method allows you to send a single voice message to one destination address.</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"text\": \"\",\n  \"audioFileUrl\": \"\"\n  \"language\": \"\",\n  \"voice\": {\n    \"name\": \"\",\n    \"gender\": \"\"\n  },\n  \"from\": \"\",\n  \"to\": \"\"\n}\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>audioFileUrl</td>\n<td>string</td>\n<td>An audio file can be delivered as a voice message to the recipients. An audio file must be uploaded online, so that the existing URL can be available for file download. Size of the audio file must be below 4 MB. Supported formats of the provided file are aac, aiff, m4a, mp2, mp3, mp4 (audio only), ogg, wav and wma. Our platform needs to have permission to make GET and HEAD HTTP requests on the provided URL. Standard http ports (like 80, 8080, etc.) are advised.</td>\n</tr>\n<tr>\n<td><em>from</em></td>\n<td>string  <br />  <br /></td>\n<td>Required  <br />  <br />Numeric sender ID in E.164 standard format (Example: 46701234567). This is caller ID that will be presented to the end user where applicable.</td>\n</tr>\n<tr>\n<td>language</td>\n<td>string</td>\n<td>If the message is in text format, the language in which the message is written must be defined for correct pronunciation. More about Text-to-speech functionality and supported TTS languages can be found here. If not set, default language is English [en]. If voice is not set, then default voice for that specific language is used. In the case of English language, the voice is [Joanna].</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Message to be converted to speech and played to subscribers. Message text can be up to 1400 characters long and cannot contain only punctuation.</td>\n</tr>\n<tr>\n<td>to</td>\n<td>string  <br />  <br />required</td>\n<td>Phone number of the recipient. Phone number must be written in E.164 standard format (Example: 46701234567).</td>\n</tr>\n<tr>\n<td>voice</td>\n<td>object</td>\n<td>Used to define voice in which text would be synthesized. It has two parameters: name and gender. When only name is provided, then that exact voice with that name will be used to synthesize text. If only gender is provided, then text is synthesized with first voice in given gender. If voice is not set, then default voice is used.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Voice: object</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>gender</td>\n<td>string</td>\n<td>Gender of the voice. Can be male or female.</td>\n</tr>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>Name of the voice. Example: Joanna</td>\n</tr>\n</tbody>\n</table>\n</div><h1 id=\"response-format\">Response format</h1>\n<p>If successful, response header HTTP status code will be <code>200 OK</code> and the message will be sent.</p>\n<p>If you try to send a message without authorization, you will receive the <code>401 Unauthorized</code> error .</p>\n<h3 id=\"voiceresponse\">VoiceResponse</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>messages</em></td>\n<td>Array of object</td>\n<td>Array of sent message objects, one object per every message.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"voiceresponsedetails\">VoiceResponseDetails</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>to</em></td>\n<td>String</td>\n<td>The message destination address.</td>\n</tr>\n<tr>\n<td><em>status</em></td>\n<td>Status</td>\n<td>Indicates whether the message has been successfully sent, not sent, delivered, not delivered, waiting for delivery or any other possible status.</td>\n</tr>\n<tr>\n<td><em>messageId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the message sent.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"status\">Status</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>groupId</em></td>\n<td>Int</td>\n<td>Status group ID</td>\n</tr>\n<tr>\n<td><em>groupName</em></td>\n<td>String</td>\n<td>Status group name</td>\n</tr>\n<tr>\n<td><em>id</em></td>\n<td>Int</td>\n<td>Status ID</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>Status name</td>\n</tr>\n<tr>\n<td><em>description</em></td>\n<td>String</td>\n<td>Human readable description of the status.</td>\n</tr>\n</tbody>\n</table>\n</div><h1 id=\"languages\">Languages</h1>\n<p>List of supported languages:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Language</th>\n<th>Language shortcut</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>English</td>\n<td>en</td>\n</tr>\n<tr>\n<td>English (British)</td>\n<td>en-gb</td>\n</tr>\n<tr>\n<td>English (Australian)</td>\n<td>en-au</td>\n</tr>\n<tr>\n<td>English (Indian)</td>\n<td>en-in</td>\n</tr>\n<tr>\n<td>English (Welsh)</td>\n<td>en-gb-wls</td>\n</tr>\n<tr>\n<td>Spanish</td>\n<td>es</td>\n</tr>\n<tr>\n<td>Catalan</td>\n<td>ca</td>\n</tr>\n<tr>\n<td>Chinese-Simplified</td>\n<td>zh-cn</td>\n</tr>\n<tr>\n<td>Chinese-Traditional</td>\n<td>zh-tw</td>\n</tr>\n<tr>\n<td>Danish</td>\n<td>da</td>\n</tr>\n<tr>\n<td>Dutch</td>\n<td>nl</td>\n</tr>\n<tr>\n<td>French</td>\n<td>fr</td>\n</tr>\n<tr>\n<td>German</td>\n<td>de</td>\n</tr>\n<tr>\n<td>Italian</td>\n<td>it</td>\n</tr>\n<tr>\n<td>Japanese</td>\n<td>ja</td>\n</tr>\n<tr>\n<td>Korean</td>\n<td>ko</td>\n</tr>\n<tr>\n<td>Norwegian</td>\n<td>no</td>\n</tr>\n<tr>\n<td>Polish</td>\n<td>pl</td>\n</tr>\n<tr>\n<td>Portuguese</td>\n<td>pt-pt</td>\n</tr>\n<tr>\n<td>Portuguese - Brazilian</td>\n<td>pt-br</td>\n</tr>\n<tr>\n<td>Russian</td>\n<td>ru</td>\n</tr>\n<tr>\n<td>Swedish</td>\n<td>sv</td>\n</tr>\n<tr>\n<td>Finnish</td>\n<td>fi</td>\n</tr>\n<tr>\n<td>Turkish</td>\n<td>tr</td>\n</tr>\n<tr>\n<td>Welsh</td>\n<td>wls</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-response-fields\">Additional response fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the request. Bulk ID will be received only when you send a message to more than one destination address.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["tts","3","single"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"61537663-394f-41a8-b0e5-fb08e0d90304","name":"Single voice message by audioFile","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n\"audioFileUrl\": \"https://www.example.com/media.mp3\",\n\"language\": \"en\",\n\"voice\": {\n\"name\": \"Joanna\",\n\"gender\": \"female\"\n},\n\"from\": \"46701923177\",\n\"to\": \"4670123456\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/tts/3/single"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"268"},{"key":"Date","value":"Wed, 19 Apr 2023 06:13:00 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1681884781063398162"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"bulkId\": \"6e64033a-96e5-4c1e-b2c6-0c4106525af9\",\n    \"messages\": [\n        {\n            \"to\": \"4670123456\",\n            \"status\": {\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 26,\n                \"name\": \"PENDING_ACCEPTED\",\n                \"description\": \"Message accepted, pending for delivery.\"\n            },\n            \"messageId\": \"bee4d267-b36d-4ef9-8ccc-542700bc3a97\"\n        }\n    ]\n}"},{"id":"53a73213-ce85-4a56-9aa1-58f6001b315b","name":"Single voice message by text","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n\"text\": \"Hello world!\",\n\"language\": \"en\",\n\"voice\": {\n\"name\": \"Joanna\",\n\"gender\": \"female\"\n},\n\"from\": \"46701923177\",\n\"to\": \"4670123456\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/tts/3/single"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"268"},{"key":"Date","value":"Wed, 19 Apr 2023 07:45:54 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1681890355081433830"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"bulkId\": \"d87320ae-c3a6-450c-9e0e-d919836e8d84\",\n    \"messages\": [\n        {\n            \"to\": \"4670123456\",\n            \"status\": {\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 26,\n                \"name\": \"PENDING_ACCEPTED\",\n                \"description\": \"Message accepted, pending for delivery.\"\n            },\n            \"messageId\": \"c090e05d-deb5-4aa3-8687-bdac0cc3c7d8\"\n        }\n    ]\n}"}],"_postman_id":"394d4801-b7d0-4598-b607-f3f19dfd1a48"},{"name":"Multiple voice message","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","if (pm.environment.get(\"runVoiceCalls\") !== \"true\") { skip(\"runVoiceCalls is not \\\"true\\\" in the environment, so no call is placed\"); }","else if (!((pm.environment.get(\"testVoiceNumber\") || \"\").trim() || (pm.environment.get(\"testNumber\") || \"\").trim())) { skip(\"testVoiceNumber (or testNumber) is not set\"); }"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"bulkId\", \"messages\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","","pm.test(\"'messages' is an array\", function () {","    pm.expect(responseBody[\"messages\"]).to.be.an('array');","});"],"type":"text/javascript","packages":{}}}],"id":"1f8c885a-edf2-4370-90e5-180ed0ffd5c3","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"messages\": [\n    {\n      \"text\": \"Test Voice message.\",\n      \"language\": \"en\",\n      \"voice\": {\n        \"gender\": \"female\",\n        \"name\": \"Joanna\"\n      },\n      \"from\": \"46700000000\",\n      \"to\": [\n        \"46731234567\"\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/tts/3/multi","description":"<blockquote>\n<p><strong>This request places a real phone call</strong> to your <code>testNumber</code>. It runs only when the environment variable <code>runVoiceCalls</code> is <code>true</code>; otherwise it is skipped.</p>\n</blockquote>\n<blockquote>\n<p><strong>A call can be accepted and still not be placed.</strong> The API answers <code>200</code> with status <code>PENDING</code> when it accepts the request. The final result appears later in the logs and delivery reports. For example <code>REJECTED_DND</code> means the number is on a do-not-disturb list, so the call was never connected. Check <strong>Voice message logs</strong> (filter with <code>bulkId</code>) to see what happened to the call.</p>\n</blockquote>\n<p>This method allows you to send multiple voice messages to more destination addresses.</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"text\": \"\",\n  \"audioFileUrl\": \"\"\n  \"language\": \"\",\n  \"voice\": {\n    \"name\": \"\",\n    \"gender\": \"\"\n  },\n  \"from\": \"\",\n  \"to\": \"\"\n}\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>audioFileUrl</td>\n<td>string</td>\n<td>An audio file can be delivered as a voice message to the recipients. An audio file must be uploaded online, so that the existing URL can be available for file download. Size of the audio file must be below 4 MB. Supported formats of the provided file are aac, aiff, m4a, mp2, mp3, mp4 (audio only), ogg, wav and wma. Our platform needs to have permission to make GET and HEAD HTTP requests on the provided URL. Standard http ports (like 80, 8080, etc.) are advised.</td>\n</tr>\n<tr>\n<td><em>from</em></td>\n<td>string  <br />  <br /></td>\n<td>Required  <br />  <br />Numeric sender ID in E.164 standard format (Example: 46701234567). This is caller ID that will be presented to the end user where applicable.</td>\n</tr>\n<tr>\n<td>language</td>\n<td>string</td>\n<td>If the message is in text format, the language in which the message is written must be defined for correct pronunciation. More about Text-to-speech functionality and supported TTS languages can be found here. If not set, default language is English [en]. If voice is not set, then default voice for that specific language is used. In the case of English language, the voice is [Joanna].</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Message to be converted to speech and played to subscribers. Message text can be up to 1400 characters long and cannot contain only punctuation.</td>\n</tr>\n<tr>\n<td>to</td>\n<td>string  <br />  <br />required</td>\n<td>Phone number of the recipient. Phone number must be written in E.164 standard format (Example: 46701234567).</td>\n</tr>\n<tr>\n<td>voice</td>\n<td>object</td>\n<td>Used to define voice in which text would be synthesized. It has two parameters: name and gender. When only name is provided, then that exact voice with that name will be used to synthesize text. If only gender is provided, then text is synthesized with first voice in given gender. If voice is not set, then default voice is used.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Voice: object</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>gender</td>\n<td>string</td>\n<td>Gender of the voice. Can be male or female.</td>\n</tr>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>Name of the voice. Example: Joanna</td>\n</tr>\n</tbody>\n</table>\n</div><h1 id=\"response-format\">Response format</h1>\n<p>If successful, response header HTTP status code will be <code>200 OK</code> and the message will be sent.</p>\n<p>If you try to send a message without authorization, you will receive the <code>401 Unauthorized</code> error .</p>\n<h3 id=\"voiceresponse\">VoiceResponse</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>messages</em></td>\n<td>Array of objects</td>\n<td>Array of sent message objects, one object per every message.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"voiceresponsedetails\">VoiceResponseDetails</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>to</em></td>\n<td>String</td>\n<td>The message destination address.</td>\n</tr>\n<tr>\n<td><em>status</em></td>\n<td>Status</td>\n<td>Indicates whether the message has been successfully sent, not sent, delivered, not delivered, waiting for delivery or any other possible status.</td>\n</tr>\n<tr>\n<td><em>messageId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the message sent.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"status\">Status</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>groupId</em></td>\n<td>Int</td>\n<td>Status group ID</td>\n</tr>\n<tr>\n<td><em>groupName</em></td>\n<td>String</td>\n<td>Status group name</td>\n</tr>\n<tr>\n<td><em>id</em></td>\n<td>Int</td>\n<td>Status ID</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>Status name</td>\n</tr>\n<tr>\n<td><em>description</em></td>\n<td>String</td>\n<td>Human readable description of the status.</td>\n</tr>\n</tbody>\n</table>\n</div><h1 id=\"languages\">Languages</h1>\n<p>List of supported languages:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Language</th>\n<th>Language shortcut</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>English</td>\n<td>en</td>\n</tr>\n<tr>\n<td>English (British)</td>\n<td>en-gb</td>\n</tr>\n<tr>\n<td>English (Australian)</td>\n<td>en-au</td>\n</tr>\n<tr>\n<td>English (Indian)</td>\n<td>en-in</td>\n</tr>\n<tr>\n<td>English (Welsh)</td>\n<td>en-gb-wls</td>\n</tr>\n<tr>\n<td>Spanish</td>\n<td>es</td>\n</tr>\n<tr>\n<td>Catalan</td>\n<td>ca</td>\n</tr>\n<tr>\n<td>Chinese-Simplified</td>\n<td>zh-cn</td>\n</tr>\n<tr>\n<td>Chinese-Traditional</td>\n<td>zh-tw</td>\n</tr>\n<tr>\n<td>Danish</td>\n<td>da</td>\n</tr>\n<tr>\n<td>Dutch</td>\n<td>nl</td>\n</tr>\n<tr>\n<td>French</td>\n<td>fr</td>\n</tr>\n<tr>\n<td>German</td>\n<td>de</td>\n</tr>\n<tr>\n<td>Italian</td>\n<td>it</td>\n</tr>\n<tr>\n<td>Japanese</td>\n<td>ja</td>\n</tr>\n<tr>\n<td>Korean</td>\n<td>ko</td>\n</tr>\n<tr>\n<td>Norwegian</td>\n<td>no</td>\n</tr>\n<tr>\n<td>Polish</td>\n<td>pl</td>\n</tr>\n<tr>\n<td>Portuguese</td>\n<td>pt-pt</td>\n</tr>\n<tr>\n<td>Portuguese - Brazilian</td>\n<td>pt-br</td>\n</tr>\n<tr>\n<td>Russian</td>\n<td>ru</td>\n</tr>\n<tr>\n<td>Swedish</td>\n<td>sv</td>\n</tr>\n<tr>\n<td>Finnish</td>\n<td>fi</td>\n</tr>\n<tr>\n<td>Turkish</td>\n<td>tr</td>\n</tr>\n<tr>\n<td>Welsh</td>\n<td>wls</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-response-fields\">Additional response fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the request. Bulk ID will be received only when you send a message to more than one destination address.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["tts","3","multi"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"9f9cb4d0-040e-42b7-92b7-33a70a31e613","name":"Multiple voice message","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"messages\": [\n    {\n      \"audioFileUrl\": \"https://www.example.com/media.mp3\",\n      \"from\": \"46701923177\",\n      \"to\": [\n        \"4670123456\",\n        \"4670123457\"\n      ]\n    },\n    {\n      \"text\": \"Hello world!\",\n      \"language\": \"en\",\n      \"voice\": {\n        \"name\": \"Joanna\",\n        \"gender\": \"female\"\n      },\n      \"from\": \"46701923177\",\n      \"to\": [\n        \"4670123458\",\n        \"4670123459\"\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/tts/3/multi"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"888"},{"key":"Date","value":"Wed, 19 Apr 2023 06:14:42 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1681884883339997226"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"bulkId\": \"1cab30c2-4730-45e5-a911-dd63aa4cff67\",\n    \"messages\": [\n        {\n            \"to\": \"4670123456\",\n            \"status\": {\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 26,\n                \"name\": \"PENDING_ACCEPTED\",\n                \"description\": \"Message accepted, pending for delivery.\"\n            },\n            \"messageId\": \"b1a662cf-4509-4084-8f24-5c57223e0efa\"\n        },\n        {\n            \"to\": \"4670123457\",\n            \"status\": {\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 26,\n                \"name\": \"PENDING_ACCEPTED\",\n                \"description\": \"Message accepted, pending for delivery.\"\n            },\n            \"messageId\": \"67d03a79-54ca-4cf2-aba2-98f0ff9ebbec\"\n        },\n        {\n            \"to\": \"4670123458\",\n            \"status\": {\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 26,\n                \"name\": \"PENDING_ACCEPTED\",\n                \"description\": \"Message accepted, pending for delivery.\"\n            },\n            \"messageId\": \"ef80839d-4829-462a-9c8f-c973452344f1\"\n        },\n        {\n            \"to\": \"4670123459\",\n            \"status\": {\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 26,\n                \"name\": \"PENDING_ACCEPTED\",\n                \"description\": \"Message accepted, pending for delivery.\"\n            },\n            \"messageId\": \"18b2cde8-a914-4ab3-8166-711616f28cf9\"\n        }\n    ]\n}"}],"_postman_id":"1f8c885a-edf2-4370-90e5-180ed0ffd5c3"},{"name":"Send advanced voice messages","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","if (pm.environment.get(\"runVoiceCalls\") !== \"true\") { skip(\"runVoiceCalls is not \\\"true\\\" in the environment, so no call is placed\"); }","else if (!((pm.environment.get(\"testVoiceNumber\") || \"\").trim() || (pm.environment.get(\"testNumber\") || \"\").trim())) { skip(\"testVoiceNumber (or testNumber) is not set\"); }"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"bulkId\", \"messages\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","","pm.test(\"'messages' is an array\", function () {","    pm.expect(responseBody[\"messages\"]).to.be.an('array');","});"],"type":"text/javascript","packages":{}}}],"id":"bf7b536f-2434-4e1a-928f-fa21a1c3834f","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"messages\": [\n    {\n      \"from\": \"46700000000\",\n      \"destinations\": [\n        {\n          \"to\": \"46731234567\"\n        }\n      ],\n      \"text\": \"Test Voice message.\",\n      \"language\": \"en\",\n      \"voice\": {\n        \"gender\": \"female\",\n        \"name\": \"Joanna\"\n      },\n      \"speechRate\": 1.0,\n      \"callbackData\": \"DLR callback data\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/tts/3/advanced","description":"<blockquote>\n<p><strong>This request places a real phone call</strong> to your <code>testNumber</code>. It runs only when the environment variable <code>runVoiceCalls</code> is <code>true</code>; otherwise it is skipped.</p>\n</blockquote>\n<blockquote>\n<p><strong>A call can be accepted and still not be placed.</strong> The API answers <code>200</code> with status <code>PENDING</code> when it accepts the request. The final result appears later in the logs and delivery reports. For example <code>REJECTED_DND</code> means the number is on a do-not-disturb list, so the call was never connected. Check <strong>Voice message logs</strong> (filter with <code>bulkId</code>) to see what happened to the call.</p>\n</blockquote>\n<p>This method allows you to send advanced voice messages with all the available features and parameters.</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"bulkId\": \"\",\n  \"messages\": [\n    {\n      \"from\": \"\",\n      \"destinations\": [\n        {\n          \"to\": \"\",\n          \"messageId\": \"\"\n        },\n        {\n          \"to\": \"\"\n        }\n      ],\n      \"audioFileUrl\":\"\",\n      \"text\": \"\",\n      \"language\": \",\n      \"voice\": {\n        \"name\": \"\",\n        \"gender\": \"\"\n      },\n      \"speechRate\": ,\n      \"notifyUrl\": \"\",\n      \"notifyContentType\": \"\",\n      \"validityPeriod\": ,\n      \"sendAt\": \"\",\n      \"record\":,\n      \"repeatDtmf\": \"\",\n      \"maxDtmf\":,\n      \"ringTimeout\": ,\n      \"dtmfTimeout\": ,\n      \"callTimeout\": ,\n      \"callTransfers\": [\n        {\n          \"equals\": \"\",\n          \"transferTo\": \"\",\n          \"callTransferMaxDuration\": ,\n          \"if\": \"\"\n        },\n        {\n          \"transferTo\": \"\",\n          \"callTransferMaxDuration\": ,\n          \"if\": \"\"\n        }\n      ],\n      \"callbackData\": \"\",\n      \"pause\": ,\n      \"retry\": {\n        \"minPeriod\": ,\n        \"maxPeriod\": ,\n        \"maxCount\": \n      },\n      \"sendingSpeed\": {\n        \"speed\":,\n        \"timeUnit\": \"\"\n      },\n      \"machineDetection\": \"\",\n      \"deliveryTimeWindow\": {\n        \"from\": {\n          \"hour\": ,\n          \"minute\": \n        },\n        \"to\": {\n          \"hour\": ,\n          \"minute\": \n        },\n        \"days\": [\n          \"\",\n          \"\",\n          \"\",\n          \"\",\n          \"\",\n          \"\",\n          \"\"\n        ]\n      }\n    }\n  ]\n}\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>bulkId</td>\n<td>string</td>\n<td>The ID which uniquely identifies the request.</td>\n</tr>\n<tr>\n<td>messages</td>\n<td>array of objects  <br />  <br /></td>\n<td>Required  <br />  <br />Array of messages to be sent, one object per every message</td>\n</tr>\n</tbody>\n</table>\n</div><pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">  \"messages\": [\n    {\n      \"from\": \"\",\n      \"destinations\": [],\n      \"audioFileUrl\":\"\",\n      \"text\": \"\",\n      \"language\": \",\n      \"voice\": {},\n      \"speechRate\": ,\n      \"notifyUrl\": \"\",\n      \"notifyContentType\": \"\",\n      \"validityPeriod\": ,\n      \"sendAt\": \"\",\n      \"record\":,\n      \"repeatDtmf\": \"\",\n      \"maxDtmf\":,\n      \"ringTimeout\": ,\n      \"dtmfTimeout\": ,\n      \"callTimeout\": ,\n      \"callTransfers\": [],\n      \"callbackData\": \"\",\n      \"pause\": ,\n      \"retry\": {},\n      \"sendingSpeed\": {},\n      \"machineDetection\": \"\",\n      \"deliveryTimeWindow\": {}\n    }\n  ]\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>from</td>\n<td>string</td>\n<td>The ID which uniquely identifies the request.</td>\n</tr>\n<tr>\n<td>destinations</td>\n<td>array of objects  <br />  <br /></td>\n<td>Required  <br />  <br />Message destination addresses. Destination address must be in the E.164 standard format (Example: 46701234567).</td>\n</tr>\n<tr>\n<td>audioFileUrl</td>\n<td>string</td>\n<td>An audio file can be delivered as a voice message to the recipients. An audio file must be uploaded online, so that the existing URL can be available for file download. Size of the audio file must be below 4 MB. Supported formats of the provided file are aac, aiff, m4a, mp2, mp3, mp4 (audio only), ogg, wav and wma. Our platform needs to have permission to make GET and HEAD HTTP requests on the provided URL. Standard http ports (like 80, 8080, etc.) are advised.  <br />  <br />Note: We can only use either audioFileUrl or text not both.</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Text of the message that will be sent. Message text can be up to 1400 characters long and cannot contain only punctuation. Adding pauses between the words and extending the duration of the voice message is possible by using the comma character “,”. For example, if you want to have a 3 second pause after each word, then the text parameter should look like this “one,,,,,,two,,,,,,three,,,,,,”. Each comma creates a pause of 0.5 seconds.  <br />  <br />Note: We can only use either audioFileUrl or text not both.</td>\n</tr>\n<tr>\n<td>language</td>\n<td>string</td>\n<td>If the message is in text format, the language in which the message is written must be defined for correct pronunciation. More about Text-to-speech functionality and supported TTS languages can be found here. If not set, default language is English [en]. If voice is not set, then default voice for that specific language is used. In the case of English language, the voice is [Joanna].  <br />Voice Text-To-Speech Languages</td>\n</tr>\n<tr>\n<td>voice</td>\n<td>object</td>\n<td>Used to define voice in which text would be synthesized. It has two parameters: name and gender. When only name is provided, then that exact voice with that name will be used to synthesize text. If only gender is provided, then text is synthesized with first voice in given gender. If voice is not set, then default voice for that specific language is used.</td>\n</tr>\n<tr>\n<td>speechRate</td>\n<td>number</td>\n<td>The reproduction speed of speech in the resulting message. Effective only when using text. Supported range is from 0.5 (slow down speech) to 2 (speed up speech). Values less than 0.5 will be replaced with 0.5, and values higher than 2 will be replaced with 2. Default value is 1.</td>\n</tr>\n<tr>\n<td>notifyUrl</td>\n<td>string</td>\n<td>The URL on your callback server on which the Delivery report will be sent.</td>\n</tr>\n<tr>\n<td>notifyContentType</td>\n<td>string</td>\n<td>Preferred Delivery report content type. Can be application/json or application/xml.</td>\n</tr>\n<tr>\n<td>validityPeriod</td>\n<td>integer</td>\n<td>The message validity period shown in minutes. When the period expires, it will not be allowed for the message to be sent. A validity period longer than 48h is not supported (in this case, it will be automatically set to 48h).</td>\n</tr>\n<tr>\n<td>sendAt</td>\n<td>string</td>\n<td>Used for scheduled Voice messages (message not to be sent immediately, but at scheduled time).</td>\n</tr>\n<tr>\n<td>record</td>\n<td>boolean</td>\n<td>Record the call and expose it to client as URL inside the delivery report. Can be true or false</td>\n</tr>\n<tr>\n<td>repeatDtmf</td>\n<td>string</td>\n<td>Specify DTMF code that is used as an indicator to repeat the voice message to the end user. The # key cannot be collected, as it is reserved for user input termination. Message can be repeated up to 5 times.</td>\n</tr>\n<tr>\n<td>maxDtmf</td>\n<td>integer</td>\n<td>Defines the maximum number of DTMF codes entered by end user that would be collected.</td>\n</tr>\n<tr>\n<td>ringTimeout</td>\n<td>integer</td>\n<td>Ringing duration, unless there are no operator limitations. Default value is 45. Note: There are no limitations on the Voice platform regarding this value, however, most of the operators have their own ring timeout limitations and it is advisable to keep the ringTimeout value up to 45 seconds.</td>\n</tr>\n<tr>\n<td>dtmfTimeout</td>\n<td>integer</td>\n<td>The waiting period for end user to enter DTMF digits. Default value is 10 seconds.</td>\n</tr>\n<tr>\n<td>callTimeout</td>\n<td>integer</td>\n<td>Maximum possible duration of the call to be set, shown in seconds.</td>\n</tr>\n<tr>\n<td>callTransfers</td>\n<td>array of objects</td>\n<td>Call transfers object enables transferring the ongoing call to another recipient(s) and establish a communication between your original recipient and additional one.</td>\n</tr>\n<tr>\n<td>callbackData</td>\n<td>string</td>\n<td>Additional client's data that will be sent on the notifyUrl. The maximum value is 200 characters. Example: Text containing some additional data needed in Delivery Report</td>\n</tr>\n<tr>\n<td>pause</td>\n<td>integer</td>\n<td>Period of time in seconds between end user answering the call and message starting to be played. Minimal value is 0 and maximum value is 10 seconds. Default value is 0.</td>\n</tr>\n<tr>\n<td>retry</td>\n<td>object</td>\n<td>Used to define if the delivery of the Voice messages should be retried in case the first try doesn't succeed. Additional retries will be made according to the schedule defined by minPeriod and maxPeriod parameters and platform's internal retry logic. If the minPeriod differs maxPeriod, delivery will be retried in the following manner: after 1 min, 2 min, 5 min, 10 min, 20 min, 30 min, 1 hour, 2 hours, 4 hours, 8 hours, 16 hours, 24 hours or until maxPeriod is reached. If the retry attempt for the maxPeriod is reached, the maxPeriod will be used for all subsequent retries. If the minPeriod and the maxPeriod are defined as equal values, the period of time between retries will be equal to this value. Message delivery will be retried until the successful delivery or message validity or maxCount value is reached.</td>\n</tr>\n<tr>\n<td>sendingSpeed</td>\n<td>object</td>\n<td>Sending rate defined in number of messages sent per second, minute, hour or day. First message will be sent immediately (or at sendAt time if scheduling is used) and subsequent messages will be sent respecting defined speed. For example, if sendingSpeed is defined as 10 messages per hour, messages will be sent every 6 minutes. If this parameter is defined, validityPeriod is ignored.</td>\n</tr>\n<tr>\n<td>machineDetection</td>\n<td>string</td>\n<td>Used for enabling detection of answering machine after the call has been answered. It can be set to hangup or continue. When set to hangup, if a machine is detected call will hang up. When set to continue, if a machine is detected, then voice message starts playing into voice mail after the answering message is finished with its greeting. If machineDetection is used, there is a minimum of 4 seconds detection time, which can result in delay of playing the message. Answering machine detection is additionally charged. For more information please contact your account manager and check documentation on Answering Machine Detection.</td>\n</tr>\n<tr>\n<td>deliveryTimeWindow</td>\n<td>object</td>\n<td>Scheduling object that allows setting up detailed time windows in which the message can be sent. Consists of from, to and days properties. Days property is mandatory. Days in the week are written as their full names: Monday-Sunday. Days parameter must be populated as a list, between two square brackets. Example: ['MONDAY', 'TUESDAY', 'WEDNESDAY']. From and to properties should be either both included, to allow finer time window granulation or both omitted, to include whole days in the delivery time window. From and to parameters are objects, that consist of hour and minute fields that hold integer values. For example, from: [ hour: 15, minute:45 ]. For complete json, please check out our example. Note: delivery time window is set in UTC timezone.</td>\n</tr>\n</tbody>\n</table>\n</div><pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">destinations\": [\n        {\n          \"to\": \"\",\n          \"messageId\": \"\"\n        },\n        {\n          \"to\": \"\"\n        }\n      ]\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>The ID that uniquely identifies the message sent</td>\n</tr>\n<tr>\n<td>to</td>\n<td>string</td>\n<td>Required  <br />  <br />Message destination addresses. Destination address must be in the E.164 standard format (Example: 46701234567).</td>\n</tr>\n</tbody>\n</table>\n</div><pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">voice\": {\n        \"name\": \"\",\n        \"gender\": \"\"\n      }\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>Gender of the voice. Can be male or female.</td>\n</tr>\n<tr>\n<td>gender</td>\n<td>string</td>\n<td>Name of the voice. Example: Joanna.</td>\n</tr>\n</tbody>\n</table>\n</div><pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">callTransfers\": [\n        {\n          \"equals\": \"\",\n          \"transferTo\": \"\",\n          \"callTransferMaxDuration\": ,\n          \"if\": \"\"\n        }\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>equals</td>\n<td>string</td>\n<td>Criteria for establishing call transfer, if dtmf is evaluated.</td>\n</tr>\n<tr>\n<td>transferTo</td>\n<td>string</td>\n<td>Phone number of the recipient that will receive transferred call. Must be written in E.164 standard (Example: 46701234567).</td>\n</tr>\n<tr>\n<td>callTransferMaxDuration</td>\n<td>integer</td>\n<td>Maximum duration of the transferred call, specified in seconds.</td>\n</tr>\n<tr>\n<td>if</td>\n<td>string</td>\n<td>Specifies what to evaluate. Can be dtmf or anyDtmf.</td>\n</tr>\n</tbody>\n</table>\n</div><pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">\"retry\": {\n        \"minPeriod\": ,\n        \"maxPeriod\": ,\n        \"maxCount\": \n      }\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>minPeriod</td>\n<td>integer</td>\n<td>Required  <br />  <br />Defines the maximum waiting time (in minutes) after the previous failed attempt to try to deliver the message again.</td>\n</tr>\n<tr>\n<td>maxPeriod</td>\n<td>integer</td>\n<td>Required  <br />  <br />Defines the minimal waiting time (in minutes) after the previous failed attempt to try to deliver the message again.</td>\n</tr>\n<tr>\n<td>maxCount</td>\n<td>integer [ -32768 .. 32767 ]</td>\n<td>Required  <br />  <br />Specify the maximum number of retry attempts. Maximum value of the maxCount is 4. If the value is higher than 4, it will be set to 4.  <br /></td>\n</tr>\n</tbody>\n</table>\n</div><pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">\"sendingSpeed\": {\n        \"speed\":,\n        \"timeUnit\": \"\"\n      }\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>speed</td>\n<td>integer</td>\n<td>Defines the number of messages that will be sent per specified time unit.</td>\n</tr>\n<tr>\n<td>timeUnit</td>\n<td>string</td>\n<td>Defines time unit used for calculating sending speed. Possible values: second, minute, hour and day.</td>\n</tr>\n</tbody>\n</table>\n</div><pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\"> \"deliveryTimeWindow\": {\n        \"from\": {\n          \"hour\": ,\n          \"minute\": \n        },\n        \"to\": {\n          \"hour\": ,\n          \"minute\": \n        },\n        \"days\": [\n          \"\",\n          \"\",\n          \"\",\n          \"\",\n          \"\",\n          \"\",\n          \"\"\n        ]\n      }\n    }\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>days</td>\n<td>Array of strings</td>\n<td>Items Enum: \"MONDAY\" \"TUESDAY\" \"WEDNESDAY\" \"THURSDAY\" \"FRIDAY\" \"SATURDAY\" \"SUNDAY\"</td>\n</tr>\n<tr>\n<td>from</td>\n<td>object</td>\n<td>Required.  <br />  <br />  <br /></td>\n</tr>\n<tr>\n<td>to</td>\n<td>object</td>\n<td>Required</td>\n</tr>\n</tbody>\n</table>\n</div><pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">\"from\": {\n          \"hour\": ,\n          \"minute\": \n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>hour</td>\n<td>integer</td>\n<td>Required</td>\n</tr>\n<tr>\n<td>minute</td>\n<td>integer</td>\n<td>Required</td>\n</tr>\n</tbody>\n</table>\n</div><pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">to\": {\n          \"hour\": ,\n          \"minute\": \n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>hour</td>\n<td>integer</td>\n<td>Required</td>\n</tr>\n<tr>\n<td>minute</td>\n<td>integer</td>\n<td>Required</td>\n</tr>\n</tbody>\n</table>\n</div><h1 id=\"languages\">Languages</h1>\n<p>List of supported languages:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Language</th>\n<th>Language shortcut</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>English</td>\n<td>en</td>\n</tr>\n<tr>\n<td>English (British)</td>\n<td>en-gb</td>\n</tr>\n<tr>\n<td>English (Australian)</td>\n<td>en-au</td>\n</tr>\n<tr>\n<td>English (Indian)</td>\n<td>en-in</td>\n</tr>\n<tr>\n<td>English (Welsh)</td>\n<td>en-gb-wls</td>\n</tr>\n<tr>\n<td>Spanish</td>\n<td>es</td>\n</tr>\n<tr>\n<td>Catalan</td>\n<td>ca</td>\n</tr>\n<tr>\n<td>Chinese-Simplified</td>\n<td>zh-cn</td>\n</tr>\n<tr>\n<td>Chinese-Traditional</td>\n<td>zh-tw</td>\n</tr>\n<tr>\n<td>Danish</td>\n<td>da</td>\n</tr>\n<tr>\n<td>Dutch</td>\n<td>nl</td>\n</tr>\n<tr>\n<td>French</td>\n<td>fr</td>\n</tr>\n<tr>\n<td>German</td>\n<td>de</td>\n</tr>\n<tr>\n<td>Italian</td>\n<td>it</td>\n</tr>\n<tr>\n<td>Japanese</td>\n<td>ja</td>\n</tr>\n<tr>\n<td>Korean</td>\n<td>ko</td>\n</tr>\n<tr>\n<td>Norwegian</td>\n<td>no</td>\n</tr>\n<tr>\n<td>Polish</td>\n<td>pl</td>\n</tr>\n<tr>\n<td>Portuguese</td>\n<td>pt-pt</td>\n</tr>\n<tr>\n<td>Portuguese - Brazilian</td>\n<td>pt-br</td>\n</tr>\n<tr>\n<td>Russian</td>\n<td>ru</td>\n</tr>\n<tr>\n<td>Swedish</td>\n<td>sv</td>\n</tr>\n<tr>\n<td>Finnish</td>\n<td>fi</td>\n</tr>\n<tr>\n<td>Turkish</td>\n<td>tr</td>\n</tr>\n<tr>\n<td>Welsh</td>\n<td>wls</td>\n</tr>\n</tbody>\n</table>\n</div><h1 id=\"response-format\">Response format</h1>\n<p>If successful, the response header HTTP status code will be <code>200 OK</code> and the message will be sent.</p>\n<p>If you try to send the message without authorization, you will receive a <code>401 Unauthorized</code> error.</p>\n<h2 id=\"voiceresponse\">VoiceResponse</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the request. Bulk ID will be received when a message is sent to more than one destination address.</td>\n</tr>\n<tr>\n<td><em>messages</em></td>\n<td>VoiceResponseDetails</td>\n<td>Array of sent message objects, one object per every message.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"voiceresponsedetails\">VoiceResponseDetails</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>to</em></td>\n<td>String</td>\n<td>The message destination address.</td>\n</tr>\n<tr>\n<td><em>status</em></td>\n<td>Status</td>\n<td>Indicates whether the message has been sent successfully, not sent, delivered, not delivered, waiting for delivery or any other possible status.</td>\n</tr>\n<tr>\n<td><em>messageId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the sent message.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"status\">Status</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>groupId</em></td>\n<td>Int</td>\n<td>Status group ID.</td>\n</tr>\n<tr>\n<td><em>groupName</em></td>\n<td>String</td>\n<td>Status group name.</td>\n</tr>\n<tr>\n<td><em>id</em></td>\n<td>Int</td>\n<td>Status ID.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>Status name.</td>\n</tr>\n<tr>\n<td><em>description</em></td>\n<td>String</td>\n<td>Human readable description of the status.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-request-fields\">Additional request fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>messages[].notifyContentVersion</em></td>\n<td>Int</td>\n<td>Specifies the version of the Delivery report to be sent. Can be <code>1</code> (<a href=\"#programmable-communications/voice/receive-voice-delivery-reports-deprecated\">deprecated version 1</a>) or <code>2</code> (<a href=\"#programmable-communications/voice/receive-voice-delivery-reports\">current version 2</a>). The default is version 2. Read more.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["tts","3","advanced"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"1772bc43-d700-4abb-97f4-2a1f4af4d79b","name":"Fully featured voice messages","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"bulkId\": \"BULK-ID-123-xyz\",\n  \"messages\": [\n    {\n      \"from\": \"46701923177\",\n      \"destinations\": [\n        {\n          \"to\": \"4670123456\",\n          \"messageId\": \"MESSAGE-ID-123-xyz\"\n        },\n        {\n          \"to\": \"4670123457\"\n        }\n      ],\n      \"text\": \"Test Voice message.\",\n      \"language\": \"en\",\n      \"voice\": {\n        \"name\": \"Joanna\",\n        \"gender\": \"female\"\n      },\n      \"speechRate\": 1,\n      \"notifyUrl\": \"https://www.example.com/voice/advanced\",\n      \"notifyContentType\": \"application/json\",\n      \"validityPeriod\": 720,\n      \"sendAt\": \"2023-04-20T15:45:10.649+0000\",\n      \"record\": false,\n      \"repeatDtmf\": \"123\",\n      \"maxDtmf\": 1,\n      \"ringTimeout\": 45,\n      \"dtmfTimeout\": 10,\n      \"callTimeout\": 130,\n      \"callTransfers\": [\n        {\n          \"equals\": \"2\",\n          \"transferTo\": \"4670123450\",\n          \"callTransferMaxDuration\": 45,\n          \"if\": \"DTMF\"\n        },\n        {\n          \"transferTo\": \"4670123451\",\n          \"callTransferMaxDuration\": 45,\n          \"if\": \"anyDtmf\"\n        }\n      ],\n      \"callbackData\": \"DLR callback data\",\n      \"pause\": 3,\n      \"retry\": {\n        \"minPeriod\": 1,\n        \"maxPeriod\": 5,\n        \"maxCount\": 5\n      },\n      \"sendingSpeed\": {\n        \"speed\": 5,\n        \"timeUnit\": \"minute\"\n      },\n      \"deliveryTimeWindow\": {\n        \"from\": {\n          \"hour\": 6,\n          \"minute\": 0\n        },\n        \"to\": {\n          \"hour\": 15,\n          \"minute\": 30\n        },\n        \"days\": [\n          \"MONDAY\",\n          \"TUESDAY\",\n          \"WEDNESDAY\",\n          \"THURSDAY\",\n          \"FRIDAY\",\n          \"SATURDAY\",\n          \"SUNDAY\"\n        ]\n      }\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/tts/3/advanced"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"437"},{"key":"Date","value":"Thu, 20 Apr 2023 14:33:54 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1682001234027824663"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"bulkId\": \"BULK-ID-123-xyz\",\n    \"messages\": [\n        {\n            \"to\": \"4670123456\",\n            \"status\": {\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 26,\n                \"name\": \"PENDING_ACCEPTED\",\n                \"description\": \"Message accepted, pending for delivery.\"\n            },\n            \"messageId\": \"MESSAGE-ID-123-xyz\"\n        },\n        {\n            \"to\": \"4670123457\",\n            \"status\": {\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 26,\n                \"name\": \"PENDING_ACCEPTED\",\n                \"description\": \"Message accepted, pending for delivery.\"\n            },\n            \"messageId\": \"31b710ff-b996-48ae-a478-e2de291f16de\"\n        }\n    ]\n}"}],"_postman_id":"bf7b536f-2434-4e1a-928f-fa21a1c3834f"},{"name":"Voice message logs","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"results\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","","pm.test(\"'results' is an array\", function () {","    pm.expect(responseBody[\"results\"]).to.be.an('array');","});"],"type":"text/javascript","packages":{}}}],"id":"001188c9-3bf7-4639-b836-c76212f69334","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[],"url":"https://go2.vhdmedia.se/tts/3/logs","description":"<p>This method allows you to get logs for sent voice messages.</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>from</td>\n<td>string</td>\n<td>Sender ID that can be numeric.</td>\n</tr>\n<tr>\n<td><em>to</em></td>\n<td>string</td>\n<td>The message destination address.</td>\n</tr>\n<tr>\n<td>bulkId</td>\n<td>array of strings</td>\n<td>The ID which uniquely identifies the request.</td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>array of strings</td>\n<td>The ID that uniquely identifies the message sent.</td>\n</tr>\n<tr>\n<td>generalStatus</td>\n<td>string</td>\n<td>Sent voice message status group. Indicates whether the message has been successfully sent, not sent, delivered, not delivered, waiting for delivery or any other possible status</td>\n</tr>\n<tr>\n<td>sentSince</td>\n<td>string</td>\n<td>Lower limit on date and time of sending a Voice message. Has the following format: yyyy-MM-dd'T'HH:mm:ss.SSSXXX.</td>\n</tr>\n<tr>\n<td>sentUntil</td>\n<td>string</td>\n<td>Upper limit on date and time of sending a Voice message. Has the following format: yyyy-MM-dd'T'HH:mm:ss.SSSXXX.</td>\n</tr>\n<tr>\n<td>limit</td>\n<td><br />integer</td>\n<td>Maximal number of messages in the returned logs. Default value is 50.</td>\n</tr>\n<tr>\n<td>mcc</td>\n<td>string</td>\n<td>Mobile country code.</td>\n</tr>\n<tr>\n<td>mnc</td>\n<td>string</td>\n<td>Mobile network code.</td>\n</tr>\n</tbody>\n</table>\n</div><h1 id=\"response-format\">Response format</h1>\n<p>If successful, the response header HTTP status code will be <code>200 OK</code> and the message logs will be returned.</p>\n<p>If you try to send the message without authorization, you will get a response with HTTP status code <code>401 Unauthorized</code>.</p>\n<p>If you are using this method too many times in a short period, you will get status code <code>429 Too Many Requests</code>. This prevents misusing logs in cases where reports would be more appropriate.</p>\n<h2 id=\"voicelogsresponse\">VoiceLogsResponse</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results</em></td>\n<td>array of objects</td>\n<td>Array of voice message logs, one object per each message</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"voicelog\">VoiceLog</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>string</td>\n<td>The ID that uniquely identifies the request.</td>\n</tr>\n<tr>\n<td><em>messageId</em></td>\n<td>string</td>\n<td>The ID that uniquely identifies the message sent.</td>\n</tr>\n<tr>\n<td><em>to</em></td>\n<td>string</td>\n<td>The message destination address.</td>\n</tr>\n<tr>\n<td><em>from</em></td>\n<td>string</td>\n<td>Sender ID that can be alphanumeric or numeric.</td>\n</tr>\n<tr>\n<td><em>text</em></td>\n<td>string</td>\n<td>Text of the message that was sent.</td>\n</tr>\n<tr>\n<td><em>sentAt</em></td>\n<td>date</td>\n<td>Tells when the voice message was sent. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSSZ</code>.</td>\n</tr>\n<tr>\n<td><em>doneAt</em></td>\n<td>date</td>\n<td>Tells when the voice message was processed (ie. delivered to the destination, delivered to the destination network, etc.)</td>\n</tr>\n<tr>\n<td><em>duration</em></td>\n<td>Int</td>\n<td>Call duration in seconds.</td>\n</tr>\n<tr>\n<td><em>mccMnc</em></td>\n<td>string</td>\n<td>Mobile country and network codes.</td>\n</tr>\n<tr>\n<td><em>price</em></td>\n<td>object</td>\n<td>Sent voice message price.</td>\n</tr>\n<tr>\n<td><em>status</em></td>\n<td>object</td>\n<td>Indicates whether the message has been successfully sent, not sent, delivered, not delivered, waiting for delivery or any other possible status.</td>\n</tr>\n<tr>\n<td><em>error</em></td>\n<td>object</td>\n<td>Indicates whether the error occurred during the query execution.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"price\">Price</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>pricePerSecond</em></td>\n<td>number</td>\n<td>Price per one second of voice message.</td>\n</tr>\n<tr>\n<td><em>currency</em></td>\n<td>string</td>\n<td>The currency in which the price is expressed.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"status\">Status</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>groupId</em></td>\n<td>Int</td>\n<td>Status group ID.</td>\n</tr>\n<tr>\n<td><em>groupName</em></td>\n<td>String</td>\n<td>Status group name</td>\n</tr>\n<tr>\n<td><em>id</em></td>\n<td>Int</td>\n<td>Status ID.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>Status name.</td>\n</tr>\n<tr>\n<td><em>description</em></td>\n<td>String</td>\n<td>Human readable description of the status.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"error\">Error</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>groupId</em></td>\n<td>int</td>\n<td>Error group ID.</td>\n</tr>\n<tr>\n<td><em>groupName</em></td>\n<td>string</td>\n<td>Error group name.</td>\n</tr>\n<tr>\n<td><em>id</em></td>\n<td>int</td>\n<td>Error ID.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>string</td>\n<td>Error name.</td>\n</tr>\n<tr>\n<td><em>description</em></td>\n<td>string</td>\n<td>Human-readable description of the error.</td>\n</tr>\n<tr>\n<td><em>permanent</em></td>\n<td>boolean</td>\n<td>Tells if the error is permanent.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["tts","3","logs"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"a212d58d-3478-4b19-ac15-146f199b659d","name":"Voice message logs","originalRequest":{"method":"GET","header":[],"url":"https://go2.vhdmedia.se/restapi/tts/3/logs"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Date","value":"Wed, 19 Apr 2023 13:25:57 GMT"},{"key":"Server","value":"SMS API"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"X-Request-Id","value":"1681910758002824837"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"results\": [\n        \n        {\n            \"bulkId\": \"f7c13c8e-fd34-4852-a531-6de2ad016c10\",\n            \"messageId\": \"8adc066c-2c03-4f9f-b928-a788f832f763\",\n            \"to\": \"4670123456\",\n            \"from\": \"46701923188\",\n            \"text\": \"Test Voice message.\",\n            \"sentAt\": \"2023-04-18T10:49:08.692+0000\",\n            \"doneAt\": \"2023-04-18T10:49:23.333+0000\",\n            \"duration\": 2,\n            \"mccMnc\": \"24001\",\n            \"price\": {\n                \"pricePerSecond\": 0.0001,\n                \"currency\": \"Swedish Krona\"\n            },\n            \"status\": {\n                \"groupId\": 3,\n                \"groupName\": \"DELIVERED\",\n                \"id\": 5,\n                \"name\": \"DELIVERED_TO_HANDSET\",\n                \"description\": \"Message delivered to handset\"\n            },\n            \"error\": {\n                \"groupId\": 0,\n                \"groupName\": \"OK\",\n                \"id\": 5000,\n                \"name\": \"VOICE_ANSWERED\",\n                \"description\": \"Call answered by human\",\n                \"permanent\": true\n            }\n        }\n    ]\n}"}],"_postman_id":"001188c9-3bf7-4639-b836-c76212f69334"},{"name":"Voice delivery reports","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"results\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","","pm.test(\"'results' is an array\", function () {","    pm.expect(responseBody[\"results\"]).to.be.an('array');","});"],"type":"text/javascript","packages":{}}}],"id":"5dd6f028-d2ef-4926-8788-6658a095577e","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/voice/1/reports","description":"<p>Get Voice Delivery Reports.</p>\n<p>This method allows you to get delivery reports for sent Voice messages, outbound IVR or Click-to-call (without notifyUrl request parameter). Delivery reports are returned only once. Additional delivery report request will return an empty collection.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the request. Bulk ID will be received only when you send a message to more than one destination addresses.</td>\n</tr>\n<tr>\n<td><em>messageId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the message sent.</td>\n</tr>\n<tr>\n<td><em>limit</em></td>\n<td>Int</td>\n<td>The maximum number of returned delivery reports. Default value is 50.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results</em></td>\n<td>Array</td>\n<td>Arrays of delivery reports, one object for every message.</td>\n</tr>\n<tr>\n<td><em>results[].bulkId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the bulk of messages.</td>\n</tr>\n<tr>\n<td><em>results[].messageId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the message sent.</td>\n</tr>\n<tr>\n<td><em>results[].from</em></td>\n<td>String</td>\n<td>The sender ID which can be alphanumeric or numeric.</td>\n</tr>\n<tr>\n<td><em>results[].to</em></td>\n<td>String</td>\n<td>Destination address of the voice message.</td>\n</tr>\n<tr>\n<td><em>results[].sentAt</em></td>\n<td>String</td>\n<td>Date and time when the voice message was initiated. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSSZ</code>.</td>\n</tr>\n<tr>\n<td><em>results[].mccMnc</em></td>\n<td>String</td>\n<td>Mobile country and network codes.</td>\n</tr>\n<tr>\n<td><em>results[].callbackData</em></td>\n<td>String</td>\n<td>Custom data sent over to the notifyUrl.</td>\n</tr>\n<tr>\n<td><em>results[].voiceCall</em></td>\n<td>Object</td>\n<td>Fields representing details specific for voice messages.</td>\n</tr>\n<tr>\n<td><em>results[].voiceCall.feature</em></td>\n<td>String</td>\n<td>Name of the VHD Voice service or feature.</td>\n</tr>\n<tr>\n<td><em>results[].voiceCall.startTime</em></td>\n<td>String</td>\n<td>Date and time when the voice message was established and started ringing. Has the following format: yyyy-MM-dd'T'HH:mm:ss.SSSZ.</td>\n</tr>\n<tr>\n<td><em>results[].voiceCall.answerTime</em></td>\n<td>String</td>\n<td>Date and time when the voice message was answered. Has the following format: yyyy-MM-dd'T'HH:mm:ss.SSSZ.</td>\n</tr>\n<tr>\n<td><em>results[].voiceCall.endTime</em></td>\n<td>String</td>\n<td>Date and time when the voice message was ended. Has the following format: yyyy-MM-dd'T'HH:mm:ss.SSSZ.</td>\n</tr>\n<tr>\n<td><em>results[].voiceCall.duration</em></td>\n<td>Int</td>\n<td>Duration of the voice message, in seconds.</td>\n</tr>\n<tr>\n<td><em>results[].voiceCall.chargedDuration</em></td>\n<td>Int</td>\n<td>Charged duration of the voice message, in seconds.</td>\n</tr>\n<tr>\n<td><em>results[].voiceCall.fileDuration</em></td>\n<td>Number</td>\n<td>Duration of the voice message audio file, in seconds.</td>\n</tr>\n<tr>\n<td><em>results[].voiceCall.direction</em></td>\n<td>String</td>\n<td>Call direction. One of: <code>INBOUND</code>, <code>OUTBOUND</code>.</td>\n</tr>\n<tr>\n<td><em>results[].voiceCall.dtmfCodes</em></td>\n<td>String</td>\n<td>DTMF code entered by user. Can be empty string, if user did not press anything, or <code>null</code> in case of IVR if user did not participate in Collect action.</td>\n</tr>\n<tr>\n<td><em>results[].voiceCall.answeredBy</em></td>\n<td>String</td>\n<td>If machine detection is used, contains the result of the machine detection (<code>HUMAN</code> or <code>MACHINE</code>).</td>\n</tr>\n<tr>\n<td><em>results[].voiceCall.callRecordingFileId</em></td>\n<td>String</td>\n<td>Call recording file identification, if the call was recorded. Currently, populated only if the call was IVR.</td>\n</tr>\n<tr>\n<td><em>results[].voiceCall.ivr</em></td>\n<td>Object</td>\n<td>Fields representing details about IVR, if outbound IVR is being used. If the call was not IVR, the field will be null.</td>\n</tr>\n<tr>\n<td><em>results[].voiceCall.ivr.scenarioId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the IVR scenario.</td>\n</tr>\n<tr>\n<td><em>results[].voiceCall.ivr.scenarioName</em></td>\n<td>String</td>\n<td>Name of IVR scenario.</td>\n</tr>\n<tr>\n<td><em>results[].voiceCall.ivr.collectedDtmfs</em></td>\n<td>String</td>\n<td>JSON object showing the result of every CollectAction in IVR scenario in the form of key/value pairs, where the key is CollectAction variable and pair is collected DTMF.</td>\n</tr>\n<tr>\n<td><em>results[].voiceCall.ivr.collectedMappedDtmfs</em></td>\n<td>String</td>\n<td>JSON object showing the result of every CollectAction in IVR scenario with the mapped, meaningful, values you defined in CollectAction <code>mappedValues</code> option.</td>\n</tr>\n<tr>\n<td><em>results[].voiceCall.ivr.spokenInput</em></td>\n<td>String</td>\n<td>JSON object showing the result of every CaptureSpeech action with full text spoken by the user.</td>\n</tr>\n<tr>\n<td><em>results[].voiceCall.ivr.matchedSpokenInput</em></td>\n<td>String</td>\n<td>JSON object showing the result of every CaptureSpeech action with only the key phrases that matched user spoken input.</td>\n</tr>\n<tr>\n<td><em>results[].price</em></td>\n<td>Object</td>\n<td>Sent voice message price.</td>\n</tr>\n<tr>\n<td><em>results[].price.pricePerSecond</em></td>\n<td>Number</td>\n<td>Price per one second of the voice message.</td>\n</tr>\n<tr>\n<td><em>results[].price.currency</em></td>\n<td>String</td>\n<td>The currency in which the price is expressed.</td>\n</tr>\n<tr>\n<td><em>results[].status</em></td>\n<td>Object</td>\n<td>Indicates whether the message is successfully sent, not sent, delivered, not delivered, waiting for delivery or any other possible status.</td>\n</tr>\n<tr>\n<td><em>results[].status.groupId</em></td>\n<td>Int</td>\n<td>Status group ID.</td>\n</tr>\n<tr>\n<td><em>results[].status.groupName</em></td>\n<td>String</td>\n<td>Status group name that describes which category the status code belongs to, e.g. PENDING, UNDELIVERABLE, DELIVERED, EXPIRED, REJECTED.</td>\n</tr>\n<tr>\n<td><em>results[].status.id</em></td>\n<td>Int</td>\n<td>Status ID.</td>\n</tr>\n<tr>\n<td><em>results[].status.name</em></td>\n<td>String</td>\n<td>Status name.</td>\n</tr>\n<tr>\n<td><em>results[].status.description</em></td>\n<td>String</td>\n<td>Human-readable description of the status.</td>\n</tr>\n<tr>\n<td><em>results[].error</em></td>\n<td>Object</td>\n<td>Indicates whether the error occurred during the query execution.</td>\n</tr>\n<tr>\n<td><em>results[].error.groupId</em></td>\n<td>Int</td>\n<td>Error group ID.</td>\n</tr>\n<tr>\n<td><em>results[].error.groupName</em></td>\n<td>String</td>\n<td>Error group name.</td>\n</tr>\n<tr>\n<td><em>results[].error.id</em></td>\n<td>Int</td>\n<td>Error ID.</td>\n</tr>\n<tr>\n<td><em>results[].error.name</em></td>\n<td>String</td>\n<td>Error name.</td>\n</tr>\n<tr>\n<td><em>results[].error.description</em></td>\n<td>String</td>\n<td>Human-readable description of the error.</td>\n</tr>\n<tr>\n<td><em>results[].error.permanent</em></td>\n<td>Boolean</td>\n<td>Tells if the error is permanent.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n<blockquote>\n<p>Each report is returned only once, so running this request consumes the reports it returns.</p>\n</blockquote>\n","urlObject":{"protocol":"https","path":["voice","1","reports"],"host":["go2","vhdmedia","se"],"query":[{"disabled":true,"description":{"content":"<p>The ID that uniquely identifies the request. Bulk ID will be received only when you send a message to more than one destination addresses.</p>\n","type":"text/plain"},"key":"bulkId","value":""},{"disabled":true,"description":{"content":"<p>The ID that uniquely identifies the message sent.</p>\n","type":"text/plain"},"key":"messageId","value":""},{"disabled":true,"description":{"content":"<p>The maximum number of returned delivery reports. Default value is 50.</p>\n","type":"text/plain"},"key":"limit","value":""}],"variable":[]}},"response":[{"id":"ec8fe1b7-e52e-4c91-a4e6-60f885fda1d9","name":"200 - Response example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/voice/1/reports","protocol":"https","host":["go2","vhdmedia","se"],"path":["voice","1","reports"],"query":[{"key":"bulkId","value":"","description":"The ID that uniquely identifies the request. Bulk ID will be received only when you send a message to more than one destination addresses.","disabled":true},{"key":"messageId","value":"","description":"The ID that uniquely identifies the message sent.","disabled":true},{"key":"limit","value":"","description":"The maximum number of returned delivery reports. Default value is 50.","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"results\": [\n    {\n      \"bulkId\": \"8c20f086-d82b-48cc-b2b3-3ca5f7aca9fb\",\n      \"messageId\": \"ff4804ef-6ab6-4abd-984d-ab3b1387e852\",\n      \"from\": \"385333444\",\n      \"to\": \"385981178\",\n      \"sentAt\": \"2018-06-25T13:38:14.730+0000\",\n      \"mccMnc\": \"21901\",\n      \"callbackData\": \"DLR callback data\",\n      \"voiceCall\": {\n        \"feature\": \"Voice-message\",\n        \"startTime\": \"2018-06-25T13:38:15.000+0000\",\n        \"answerTime\": \"2018-06-25T13:38:25.000+0000\",\n        \"endTime\": \"2018-06-25T13:38:28.316+0000\",\n        \"duration\": 10,\n        \"chargedDuration\": 30,\n        \"fileDuration\": 19.3,\n        \"dtmfCodes\": \"3, 9\",\n        \"ivr\": {\n          \"scenarioId\": \"333\",\n          \"scenarioName\": \"Scenario name\",\n          \"collectedDtmfs\": \"{\\\"myFirstVar\\\":\\\"3\\\",\\\"mySecondVar\\\":\\\"9\\\"}\",\n          \"collectedMappedDtmfs\": null,\n          \"spokenInput\": null,\n          \"matchedSpokenInput\": null\n        }\n      },\n      \"price\": {\n        \"pricePerSecond\": 0.01,\n        \"currency\": \"EUR\"\n      },\n      \"status\": {\n        \"groupId\": 3,\n        \"groupName\": \"DELIVERED\",\n        \"id\": 5,\n        \"name\": \"DELIVERED_TO_HANDSET\",\n        \"description\": \"Message delivered to handset\"\n      },\n      \"error\": {\n        \"groupId\": 0,\n        \"groupName\": \"OK\",\n        \"id\": 5000,\n        \"name\": \"VOICE_ANSWERED\",\n        \"description\": \"Call answered by human\",\n        \"permanent\": true\n      }\n    }\n  ]\n}"},{"id":"3677851f-5c7e-4d17-b6d1-fa253103af8b","name":"401 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/voice/1/reports","protocol":"https","host":["go2","vhdmedia","se"],"path":["voice","1","reports"],"query":[{"key":"bulkId","value":"","description":"The ID that uniquely identifies the request. Bulk ID will be received only when you send a message to more than one destination addresses.","disabled":true},{"key":"messageId","value":"","description":"The ID that uniquely identifies the message sent.","disabled":true},{"key":"limit","value":"","description":"The maximum number of returned delivery reports. Default value is 50.","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"a6ea18d9-9faf-43f8-a078-f314315e7103","name":"403 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/voice/1/reports","protocol":"https","host":["go2","vhdmedia","se"],"path":["voice","1","reports"],"query":[{"key":"bulkId","value":"","description":"The ID that uniquely identifies the request. Bulk ID will be received only when you send a message to more than one destination addresses.","disabled":true},{"key":"messageId","value":"","description":"The ID that uniquely identifies the message sent.","disabled":true},{"key":"limit","value":"","description":"The maximum number of returned delivery reports. Default value is 50.","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"81955d2a-e1c0-468e-9878-91802b83db97","name":"500 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/voice/1/reports","protocol":"https","host":["go2","vhdmedia","se"],"path":["voice","1","reports"],"query":[{"key":"bulkId","value":"","description":"The ID that uniquely identifies the request. Bulk ID will be received only when you send a message to more than one destination addresses.","disabled":true},{"key":"messageId","value":"","description":"The ID that uniquely identifies the message sent.","disabled":true},{"key":"limit","value":"","description":"The maximum number of returned delivery reports. Default value is 50.","disabled":true}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"5dd6f028-d2ef-4926-8788-6658a095577e"},{"name":"Delivery reports for voice messages (previous)","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"results\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","","pm.test(\"'results' is an array\", function () {","    pm.expect(responseBody[\"results\"]).to.be.an('array');","});"],"type":"text/javascript","packages":{}}}],"id":"407d91a4-8638-4ec4-ba55-b8f85ba1c66b","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[],"url":"https://go2.vhdmedia.se/tts/3/reports","description":"<blockquote>\n<p><strong>Previous version.</strong> This request is replaced by <strong>Voice delivery reports</strong> (<code>GET /voice/1/reports</code>). It still works.</p>\n</blockquote>\n<p>This method allows you to get one-time delivery reports Response format</p>\n<p>If successful, the response header HTTP status code will be <code>200 OK</code> and delivery reports will be returned in the response body.</p>\n<p>If you try to send a message without authorization, you will get a response with the HTTP status code <code>401 Unauthorized</code>.</p>\n<h2 id=\"voicereportresponse\">VoiceReportResponse</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results</em></td>\n<td>array of Objects</td>\n<td>Collection of reports, one per every message.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"voicereport\">VoiceReport</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>string</td>\n<td>Bulk ID.</td>\n</tr>\n<tr>\n<td><em>messageId</em></td>\n<td>string</td>\n<td>Message ID.</td>\n</tr>\n<tr>\n<td><em>to</em></td>\n<td>string</td>\n<td>Destination address.</td>\n</tr>\n<tr>\n<td><em>sentAt</em></td>\n<td>string</td>\n<td>Tells when the voice message was sent. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSSZ</code>.</td>\n</tr>\n<tr>\n<td><em>doneAt</em></td>\n<td>string</td>\n<td>Tells when the voice message was processed (ie. delivered to destination, delivered to destination network, etc.)</td>\n</tr>\n<tr>\n<td><em>duration</em></td>\n<td>int</td>\n<td>Call duration in seconds.</td>\n</tr>\n<tr>\n<td><em>mccMnc</em></td>\n<td>string</td>\n<td>Mobile country and network codes.</td>\n</tr>\n<tr>\n<td><em>dtmfCodes</em></td>\n<td>string</td>\n<td>DTMF code entered by user.</td>\n</tr>\n<tr>\n<td><em>recordedAudioFileUrl</em></td>\n<td>string</td>\n<td>Url to retrieve recorded calls that were made by messages with the record feature activated.</td>\n</tr>\n<tr>\n<td><em>price</em></td>\n<td>price</td>\n<td>Sent voice message price.</td>\n</tr>\n<tr>\n<td><em>status</em></td>\n<td>status</td>\n<td>Indicates whether the message is successfully sent, not sent, delivered, not delivered, waiting for delivery or any other possible status.</td>\n</tr>\n<tr>\n<td><em>error</em></td>\n<td>object</td>\n<td>Indicates whether the error occurred during the query execution.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"price\">Price</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>pricePerSecond</em></td>\n<td>number</td>\n<td>Price per one second of the voice message.</td>\n</tr>\n<tr>\n<td><em>currency</em></td>\n<td>string</td>\n<td>The currency in which the price is expressed.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"status\">Status</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>groupId</em></td>\n<td>int</td>\n<td>Status group ID.</td>\n</tr>\n<tr>\n<td><em>groupName</em></td>\n<td>string</td>\n<td>Status group name.</td>\n</tr>\n<tr>\n<td><em>id</em></td>\n<td>int</td>\n<td>Status ID.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>string</td>\n<td>Status name.</td>\n</tr>\n<tr>\n<td><em>description</em></td>\n<td>string</td>\n<td>Human readable description of the status.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"error\">Error</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>groupId</em></td>\n<td>int</td>\n<td>Error group ID.</td>\n</tr>\n<tr>\n<td><em>groupName</em></td>\n<td>string</td>\n<td>Error group name.</td>\n</tr>\n<tr>\n<td><em>id</em></td>\n<td>int</td>\n<td>Error ID.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>string</td>\n<td>Error name.</td>\n</tr>\n<tr>\n<td><em>description</em></td>\n<td>string</td>\n<td>Human readable description of the error.</td>\n</tr>\n<tr>\n<td><em>permanent</em></td>\n<td>boolean</td>\n<td>Tells if the error is permanent.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"recorded-audio-file\">Recorded Audio File</h4>\n<p>If the option to record was enabled, the response will contain the <code>recordedAudioFileUrl</code> field. Using that URL with a GET method will initiate the download of the recorded file. If using a REST testing client, make sure to save the downloaded data instead of displaying it in the client's response area.<br />Recordings are encoded as PCM WAVE signed little-endian 16bit 8kHz audio files.</p>\n<blockquote>\n</blockquote>\n<p>Delivery reports are returned <strong>only once</strong>. Additional delivery report request will return an empty collection.</p>\n<h3 id=\"additional-parameters\">Additional parameters</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>limit</em></td>\n<td>Int</td>\n<td>The maximum number of returned delivery reports. Default value is 50.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-response-fields\">Additional response fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results[].startTime</em></td>\n<td>String</td>\n<td>Date and time when the voice message was established and started ringing. Has the following format: yyyy-MM-dd'T'HH:mm:ss.SSSZ.</td>\n</tr>\n<tr>\n<td><em>results[].endTime</em></td>\n<td>String</td>\n<td>Date and time when the voice message was ended. Has the following format: yyyy-MM-dd'T'HH:mm:ss.SSSZ.</td>\n</tr>\n<tr>\n<td><em>results[].answerTime</em></td>\n<td>String</td>\n<td>Date and time when the voice message was answered. Has the following format: yyyy-MM-dd'T'HH:mm:ss.SSSZ.</td>\n</tr>\n<tr>\n<td><em>results[].fileDuration</em></td>\n<td>Number</td>\n<td>Duration of the voice message audio file, in seconds.</td>\n</tr>\n<tr>\n<td><em>results[].callbackData</em></td>\n<td>String</td>\n<td>Custom data sent over to the notifyUrl.</td>\n</tr>\n<tr>\n<td><em>results[].scenarioId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the IVR scenario.</td>\n</tr>\n<tr>\n<td><em>results[].scenarioName</em></td>\n<td>String</td>\n<td>Name of IVR scenario.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["tts","3","reports"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"42f46ba2-1d2c-4e74-9093-55700562dccb","name":"Delivery reports for voice messages","originalRequest":{"method":"GET","header":[],"url":"https://go2.vhdmedia.se/restapi/tts/3/reports"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Date","value":"Wed, 19 Apr 2023 13:23:11 GMT"},{"key":"Server","value":"SMS API"},{"key":"Deprecation","value":"true"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"X-Request-Id","value":"1681910592023698663"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"results\": [\n        {\n            \"bulkId\": \"f7c13c8e-fd34-4852-a531-6de2ad016c10\",\n            \"messageId\": \"8adc066c-2c03-4f9f-b928-a788f832f763\",\n            \"to\": \"4670123456\",\n            \"sentAt\": \"2023-04-18T10:49:08.692+0000\",\n            \"doneAt\": \"2023-04-18T10:49:33.335+0000\",\n            \"startTime\": \"2023-04-18T10:49:08.000+0000\",\n            \"endTime\": \"2023-04-18T10:49:23.291+0000\",\n            \"answerTime\": \"2023-04-18T10:49:21.000+0000\",\n            \"duration\": 0,\n            \"fileDuration\": 1.306125,\n            \"mccMnc\": \"null\",\n            \"callbackData\": \"\",\n            \"dtmfCodes\": \"\",\n            \"price\": {\n                \"pricePerSecond\": 0,\n                \"currency\": \"UNKNOWN\"\n            },\n            \"status\": {\n                \"groupId\": 3,\n                \"groupName\": \"DELIVERED\",\n                \"id\": 5,\n                \"name\": \"DELIVERED_TO_HANDSET\",\n                \"description\": \"Message delivered to handset\"\n            },\n            \"error\": {\n                \"groupId\": 0,\n                \"groupName\": \"OK\",\n                \"id\": 5000,\n                \"name\": \"VOICE_ANSWERED\",\n                \"description\": \"Call answered by human\",\n                \"permanent\": true\n            }\n        },\n        {\n            \"bulkId\": \"91800d15-664c-4916-b86d-4b7f6c4d8eb3\",\n            \"messageId\": \"4ef64d1f-d3a4-43fb-ac4a-9419a423150e\",\n            \"to\": \"4670123457\",\n            \"sentAt\": \"2023-04-18T10:50:19.187+0000\",\n            \"doneAt\": \"2023-04-18T10:50:37.353+0000\",\n            \"startTime\": \"2023-04-18T10:50:19.000+0000\",\n            \"endTime\": \"2023-04-18T10:50:27.314+0000\",\n            \"answerTime\": \"2023-04-18T10:50:25.000+0000\",\n            \"duration\": 0,\n            \"fileDuration\": 1.985375,\n            \"mccMnc\": \"null\",\n            \"callbackData\": \"\",\n            \"dtmfCodes\": \"\",\n            \"price\": {\n                \"pricePerSecond\": 0,\n                \"currency\": \"UNKNOWN\"\n            },\n            \"status\": {\n                \"groupId\": 3,\n                \"groupName\": \"DELIVERED\",\n                \"id\": 5,\n                \"name\": \"DELIVERED_TO_HANDSET\",\n                \"description\": \"Message delivered to handset\"\n            },\n            \"error\": {\n                \"groupId\": 0,\n                \"groupName\": \"OK\",\n                \"id\": 5000,\n                \"name\": \"VOICE_ANSWERED\",\n                \"description\": \"Call answered by human\",\n                \"permanent\": true\n            }\n        }\n        \n        \n        \n    ]\n}"},{"id":"c632b1e6-1f22-4a9a-b393-3b99819e077e","name":"Getting two initial delivery reports for  voice messages","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://go2.vhdmedia.se/tts/3/reports?limit=2","protocol":"https","host":["go2","vhdmedia","se"],"path":["tts","3","reports"],"query":[{"key":"limit","value":"2"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"1490"},{"key":"Date","value":"Tue, 25 Apr 2023 17:33:06 GMT"},{"key":"Server","value":"SMS API"},{"key":"Deprecation","value":"true"},{"key":"X-Request-Id","value":"1682443987375062827"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"results\": [\n        {\n            \"bulkId\": \"BULK-ID-123-xyz\",\n            \"messageId\": \"724f8453-0cb4-4d46-a361-d6142bd9facb\",\n            \"to\": \"4670123456\",\n            \"sentAt\": \"2023-04-25T14:38:26.012+0000\",\n            \"doneAt\": \"2023-04-25T14:39:34.089+0000\",\n            \"startTime\": \"2023-04-25T14:38:24.086+0000\",\n            \"endTime\": \"2023-04-25T14:39:34.086+0000\",\n            \"answerTime\": \"2023-04-25T14:38:48.086+0000\",\n            \"duration\": 0,\n            \"mccMnc\": \"null\",\n            \"callbackData\": \"DLR callback data\",\n            \"price\": {\n                \"pricePerSecond\": 0,\n                \"currency\": \"UNKNOWN\"\n            },\n            \"status\": {\n                \"groupId\": 3,\n                \"groupName\": \"DELIVERED\",\n                \"id\": 5,\n                \"name\": \"DELIVERED_TO_HANDSET\",\n                \"description\": \"Message delivered to handset\"\n            },\n            \"error\": {\n                \"groupId\": 0,\n                \"groupName\": \"OK\",\n                \"id\": 5000,\n                \"name\": \"VOICE_ANSWERED\",\n                \"description\": \"Call answered by human\",\n                \"permanent\": true\n            }\n        },\n        {\n            \"bulkId\": \"BULK-ID-123-xyz\",\n            \"messageId\": \"MESSAGE-ID-123-xyz\",\n            \"to\": \"4670123457\",\n            \"sentAt\": \"2023-04-25T14:37:26.847+0000\",\n            \"doneAt\": \"2023-04-25T14:37:27.546+0000\",\n            \"startTime\": \"2023-04-25T14:37:26.000+0000\",\n            \"endTime\": \"2023-04-25T14:37:27.506+0000\",\n            \"duration\": 0,\n            \"fileDuration\": 1.724125,\n            \"mccMnc\": \"null\",\n            \"callbackData\": \"DLR callback data\",\n            \"dtmfCodes\": \"\",\n            \"price\": {\n                \"pricePerSecond\": 0,\n                \"currency\": \"UNKNOWN\"\n            },\n            \"status\": {\n                \"groupId\": 2,\n                \"groupName\": \"UNDELIVERABLE\",\n                \"id\": 4,\n                \"name\": \"UNDELIVERABLE_REJECTED_OPERATOR\",\n                \"description\": \"Message rejected by operator\"\n            },\n            \"error\": {\n                \"groupId\": 3,\n                \"groupName\": \"OPERATOR_ERRORS\",\n                \"id\": 5404,\n                \"name\": \"EC_VOICE_ERROR_DESTINATION_NOT_FOUND\",\n                \"description\": \"The server has definitive information that the user does not exist at the domain specified in the Request-URI\",\n                \"permanent\": false\n            }\n        }\n    ]\n}"}],"_postman_id":"407d91a4-8638-4ec4-ba55-b8f85ba1c66b"},{"name":"Get voices","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"voices\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","","pm.test(\"'voices' is an array\", function () {","    pm.expect(responseBody[\"voices\"]).to.be.an('array');","});"],"type":"text/javascript","packages":{}}}],"id":"6b47035b-8275-4ae3-be49-d8fdcf3fc989","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/tts/3/voices/en","description":"<p>Get Voices.</p>\n<p>This method allows you to retrieve all voices for the given language</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>language</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Represents the language abbreviation. (e.g. <code>en</code>). You can find the list of supported languages in corresponding section for sending voice message.</td>\n</tr>\n<tr>\n<td><em>includeNeural</em></td>\n<td>Boolean</td>\n<td>Indicates whether neural voices should be included in the response. If set to <code>false</code> or omitted, only standard voices will be included in the response. If set to <code>true</code>, both standard and neural voices will be included in the response. Default: <code>False</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>voices</em></td>\n<td>Array</td>\n<td>Array of voices belonging to the specified language.</td>\n</tr>\n<tr>\n<td><em>voices[].name</em></td>\n<td>String</td>\n<td>Name of the voice. Example: <code>Joanna</code></td>\n</tr>\n<tr>\n<td><em>voices[].gender</em></td>\n<td>String</td>\n<td>Gender of the voice. Can be <code>male</code> or <code>female</code>.</td>\n</tr>\n<tr>\n<td><em>voices[].supplier</em></td>\n<td>String</td>\n<td>Name of the supplier for text to speech synthesis.</td>\n</tr>\n<tr>\n<td><em>voices[].ssmlSupported</em></td>\n<td>Boolean</td>\n<td>Indicates if SSML is supported.</td>\n</tr>\n<tr>\n<td><em>voices[].default</em></td>\n<td>Boolean</td>\n<td></td>\n</tr>\n<tr>\n<td><em>voices[].neural</em></td>\n<td>Boolean</td>\n<td></td>\n</tr>\n<tr>\n<td><em>voices[].isDefault</em></td>\n<td>Boolean</td>\n<td>Indicates whether voice is default voice for a given language. If voice is not chosen for the language, then default voice will be used.</td>\n</tr>\n<tr>\n<td><em>voices[].isNeural</em></td>\n<td>Boolean</td>\n<td>Indicates whether voice is neural. Using neural voice will generate additional cost.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["tts","3","voices","en"],"host":["go2","vhdmedia","se"],"query":[{"disabled":true,"description":{"content":"<p>Indicates whether neural voices should be included in the response. If set to <code>false</code> or omitted, only standard voices will be included in the response. If set to <code>true</code>, both standard and neural voices will be included in the response. Default: <code>False</code>.</p>\n","type":"text/plain"},"key":"includeNeural","value":""}],"variable":[]}},"response":[{"id":"e126bc92-59bf-47c8-9a58-816f76662be7","name":"200 - Response example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/tts/3/voices/en","protocol":"https","host":["go2","vhdmedia","se"],"path":["tts","3","voices","en"],"query":[{"key":"includeNeural","value":"","description":"Indicates whether neural voices should be included in the response. If set to `false` or omitted, only standard voices will be included in the response. If set to `true`, both standard and neural voices will be included in the response. Default: `False`.","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"voices\": [\n    {\n      \"name\": \"Benjamin\",\n      \"gender\": \"male\",\n      \"supplier\": \"Microsoft\",\n      \"ssmlSupported\": false,\n      \"isDefault\": false,\n      \"isNeural\": false\n    },\n    {\n      \"name\": \"Ivy\",\n      \"gender\": \"female\",\n      \"supplier\": \"Amazon\",\n      \"ssmlSupported\": true,\n      \"isDefault\": false,\n      \"isNeural\": false\n    },\n    {\n      \"name\": \"Joanna\",\n      \"gender\": \"female\",\n      \"supplier\": \"Amazon\",\n      \"ssmlSupported\": true,\n      \"isDefault\": true,\n      \"isNeural\": false\n    },\n    {\n      \"name\": \"Joey\",\n      \"gender\": \"male\",\n      \"supplier\": \"Amazon\",\n      \"ssmlSupported\": true,\n      \"isDefault\": false,\n      \"isNeural\": false\n    }\n  ]\n}"},{"id":"7a750eb2-9028-4b7e-8da0-cfe0b43f2ee4","name":"401 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/tts/3/voices/en","protocol":"https","host":["go2","vhdmedia","se"],"path":["tts","3","voices","en"],"query":[{"key":"includeNeural","value":"","description":"Indicates whether neural voices should be included in the response. If set to `false` or omitted, only standard voices will be included in the response. If set to `true`, both standard and neural voices will be included in the response. Default: `False`.","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"798f125c-e06e-4a28-91ec-aa2d954d299d","name":"403 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/tts/3/voices/en","protocol":"https","host":["go2","vhdmedia","se"],"path":["tts","3","voices","en"],"query":[{"key":"includeNeural","value":"","description":"Indicates whether neural voices should be included in the response. If set to `false` or omitted, only standard voices will be included in the response. If set to `true`, both standard and neural voices will be included in the response. Default: `False`.","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"faa3868e-2633-44d7-98d4-3f455c5baad9","name":"404 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/tts/3/voices/en","protocol":"https","host":["go2","vhdmedia","se"],"path":["tts","3","voices","en"],"query":[{"key":"includeNeural","value":"","description":"Indicates whether neural voices should be included in the response. If set to `false` or omitted, only standard voices will be included in the response. If set to `true`, both standard and neural voices will be included in the response. Default: `False`.","disabled":true}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"NOT_FOUND\",\n      \"text\": \"Not found\"\n    }\n  }\n}"},{"id":"e151f749-35c0-4d23-aa53-17b8a0c76a9b","name":"500 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/tts/3/voices/en","protocol":"https","host":["go2","vhdmedia","se"],"path":["tts","3","voices","en"],"query":[{"key":"includeNeural","value":"","description":"Indicates whether neural voices should be included in the response. If set to `false` or omitted, only standard voices will be included in the response. If set to `true`, both standard and neural voices will be included in the response. Default: `False`.","disabled":true}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"6b47035b-8275-4ae3-be49-d8fdcf3fc989"},{"name":"Send advanced voice message (scheduled)","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","if (!((pm.environment.get(\"testVoiceNumber\") || \"\").trim() || (pm.environment.get(\"testNumber\") || \"\").trim())) { skip(\"testVoiceNumber (or testNumber) is not set\"); }"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"bulkId\", \"messages\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","","pm.test(\"'messages' is an array\", function () {","    pm.expect(responseBody[\"messages\"]).to.be.an('array');","});","","var j = pm.response.json();","pm.environment.set(\"voiceBulkId\", j.bulkId);"],"type":"text/javascript","packages":{}}}],"id":"268d2b9c-7c8f-4ab1-86e5-5f9a791dd469","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"messages\": [\n    {\n      \"from\": \"46700000000\",\n      \"destinations\": [\n        {\n          \"to\": \"46731234567\"\n        }\n      ],\n      \"text\": \"Scheduled VHD voice message\",\n      \"language\": \"en\",\n      \"voice\": {\n        \"gender\": \"female\",\n        \"name\": \"Joanna\"\n      },\n      \"sendAt\": \"{{sendAt}}\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/tts/3/advanced","description":"<p>Schedule a voice message for later with <code>sendAt</code>. The call is placed at that time, so this flow <strong>cancels</strong> the bulk again at the end (see <strong>Cancel the scheduled voice message</strong>). The returned <code>bulkId</code> is saved in <code>voiceBulkId</code> for the next requests.</p>\n<p>This method allows you to send advanced voice messages with all the available features and parameters.</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"bulkId\": \"\",\n  \"messages\": [\n    {\n      \"from\": \"\",\n      \"destinations\": [\n        {\n          \"to\": \"\",\n          \"messageId\": \"\"\n        },\n        {\n          \"to\": \"\"\n        }\n      ],\n      \"audioFileUrl\":\"\",\n      \"text\": \"\",\n      \"language\": \",\n      \"voice\": {\n        \"name\": \"\",\n        \"gender\": \"\"\n      },\n      \"speechRate\": ,\n      \"notifyUrl\": \"\",\n      \"notifyContentType\": \"\",\n      \"validityPeriod\": ,\n      \"sendAt\": \"\",\n      \"record\":,\n      \"repeatDtmf\": \"\",\n      \"maxDtmf\":,\n      \"ringTimeout\": ,\n      \"dtmfTimeout\": ,\n      \"callTimeout\": ,\n      \"callTransfers\": [\n        {\n          \"equals\": \"\",\n          \"transferTo\": \"\",\n          \"callTransferMaxDuration\": ,\n          \"if\": \"\"\n        },\n        {\n          \"transferTo\": \"\",\n          \"callTransferMaxDuration\": ,\n          \"if\": \"\"\n        }\n      ],\n      \"callbackData\": \"\",\n      \"pause\": ,\n      \"retry\": {\n        \"minPeriod\": ,\n        \"maxPeriod\": ,\n        \"maxCount\": \n      },\n      \"sendingSpeed\": {\n        \"speed\":,\n        \"timeUnit\": \"\"\n      },\n      \"machineDetection\": \"\",\n      \"deliveryTimeWindow\": {\n        \"from\": {\n          \"hour\": ,\n          \"minute\": \n        },\n        \"to\": {\n          \"hour\": ,\n          \"minute\": \n        },\n        \"days\": [\n          \"\",\n          \"\",\n          \"\",\n          \"\",\n          \"\",\n          \"\",\n          \"\"\n        ]\n      }\n    }\n  ]\n}\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>bulkId</td>\n<td>string</td>\n<td>The ID which uniquely identifies the request.</td>\n</tr>\n<tr>\n<td>messages</td>\n<td>array of objects  <br />  <br /></td>\n<td>Required  <br />  <br />Array of messages to be sent, one object per every message</td>\n</tr>\n</tbody>\n</table>\n</div><pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">  \"messages\": [\n    {\n      \"from\": \"\",\n      \"destinations\": [],\n      \"audioFileUrl\":\"\",\n      \"text\": \"\",\n      \"language\": \",\n      \"voice\": {},\n      \"speechRate\": ,\n      \"notifyUrl\": \"\",\n      \"notifyContentType\": \"\",\n      \"validityPeriod\": ,\n      \"sendAt\": \"\",\n      \"record\":,\n      \"repeatDtmf\": \"\",\n      \"maxDtmf\":,\n      \"ringTimeout\": ,\n      \"dtmfTimeout\": ,\n      \"callTimeout\": ,\n      \"callTransfers\": [],\n      \"callbackData\": \"\",\n      \"pause\": ,\n      \"retry\": {},\n      \"sendingSpeed\": {},\n      \"machineDetection\": \"\",\n      \"deliveryTimeWindow\": {}\n    }\n  ]\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>from</td>\n<td>string</td>\n<td>The ID which uniquely identifies the request.</td>\n</tr>\n<tr>\n<td>destinations</td>\n<td>array of objects  <br />  <br /></td>\n<td>Required  <br />  <br />Message destination addresses. Destination address must be in the E.164 standard format (Example: 46701234567).</td>\n</tr>\n<tr>\n<td>audioFileUrl</td>\n<td>string</td>\n<td>An audio file can be delivered as a voice message to the recipients. An audio file must be uploaded online, so that the existing URL can be available for file download. Size of the audio file must be below 4 MB. Supported formats of the provided file are aac, aiff, m4a, mp2, mp3, mp4 (audio only), ogg, wav and wma. Our platform needs to have permission to make GET and HEAD HTTP requests on the provided URL. Standard http ports (like 80, 8080, etc.) are advised.  <br />  <br />Note: We can only use either audioFileUrl or text not both.</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Text of the message that will be sent. Message text can be up to 1400 characters long and cannot contain only punctuation. Adding pauses between the words and extending the duration of the voice message is possible by using the comma character “,”. For example, if you want to have a 3 second pause after each word, then the text parameter should look like this “one,,,,,,two,,,,,,three,,,,,,”. Each comma creates a pause of 0.5 seconds.  <br />  <br />Note: We can only use either audioFileUrl or text not both.</td>\n</tr>\n<tr>\n<td>language</td>\n<td>string</td>\n<td>If the message is in text format, the language in which the message is written must be defined for correct pronunciation. More about Text-to-speech functionality and supported TTS languages can be found here. If not set, default language is English [en]. If voice is not set, then default voice for that specific language is used. In the case of English language, the voice is [Joanna].  <br />Voice Text-To-Speech Languages</td>\n</tr>\n<tr>\n<td>voice</td>\n<td>object</td>\n<td>Used to define voice in which text would be synthesized. It has two parameters: name and gender. When only name is provided, then that exact voice with that name will be used to synthesize text. If only gender is provided, then text is synthesized with first voice in given gender. If voice is not set, then default voice for that specific language is used.</td>\n</tr>\n<tr>\n<td>speechRate</td>\n<td>number</td>\n<td>The reproduction speed of speech in the resulting message. Effective only when using text. Supported range is from 0.5 (slow down speech) to 2 (speed up speech). Values less than 0.5 will be replaced with 0.5, and values higher than 2 will be replaced with 2. Default value is 1.</td>\n</tr>\n<tr>\n<td>notifyUrl</td>\n<td>string</td>\n<td>The URL on your callback server on which the Delivery report will be sent.</td>\n</tr>\n<tr>\n<td>notifyContentType</td>\n<td>string</td>\n<td>Preferred Delivery report content type. Can be application/json or application/xml.</td>\n</tr>\n<tr>\n<td>validityPeriod</td>\n<td>integer</td>\n<td>The message validity period shown in minutes. When the period expires, it will not be allowed for the message to be sent. A validity period longer than 48h is not supported (in this case, it will be automatically set to 48h).</td>\n</tr>\n<tr>\n<td>sendAt</td>\n<td>string</td>\n<td>Used for scheduled Voice messages (message not to be sent immediately, but at scheduled time).</td>\n</tr>\n<tr>\n<td>record</td>\n<td>boolean</td>\n<td>Record the call and expose it to client as URL inside the delivery report. Can be true or false</td>\n</tr>\n<tr>\n<td>repeatDtmf</td>\n<td>string</td>\n<td>Specify DTMF code that is used as an indicator to repeat the voice message to the end user. The # key cannot be collected, as it is reserved for user input termination. Message can be repeated up to 5 times.</td>\n</tr>\n<tr>\n<td>maxDtmf</td>\n<td>integer</td>\n<td>Defines the maximum number of DTMF codes entered by end user that would be collected.</td>\n</tr>\n<tr>\n<td>ringTimeout</td>\n<td>integer</td>\n<td>Ringing duration, unless there are no operator limitations. Default value is 45. Note: There are no limitations on the Voice platform regarding this value, however, most of the operators have their own ring timeout limitations and it is advisable to keep the ringTimeout value up to 45 seconds.</td>\n</tr>\n<tr>\n<td>dtmfTimeout</td>\n<td>integer</td>\n<td>The waiting period for end user to enter DTMF digits. Default value is 10 seconds.</td>\n</tr>\n<tr>\n<td>callTimeout</td>\n<td>integer</td>\n<td>Maximum possible duration of the call to be set, shown in seconds.</td>\n</tr>\n<tr>\n<td>callTransfers</td>\n<td>array of objects</td>\n<td>Call transfers object enables transferring the ongoing call to another recipient(s) and establish a communication between your original recipient and additional one.</td>\n</tr>\n<tr>\n<td>callbackData</td>\n<td>string</td>\n<td>Additional client's data that will be sent on the notifyUrl. The maximum value is 200 characters. Example: Text containing some additional data needed in Delivery Report</td>\n</tr>\n<tr>\n<td>pause</td>\n<td>integer</td>\n<td>Period of time in seconds between end user answering the call and message starting to be played. Minimal value is 0 and maximum value is 10 seconds. Default value is 0.</td>\n</tr>\n<tr>\n<td>retry</td>\n<td>object</td>\n<td>Used to define if the delivery of the Voice messages should be retried in case the first try doesn't succeed. Additional retries will be made according to the schedule defined by minPeriod and maxPeriod parameters and platform's internal retry logic. If the minPeriod differs maxPeriod, delivery will be retried in the following manner: after 1 min, 2 min, 5 min, 10 min, 20 min, 30 min, 1 hour, 2 hours, 4 hours, 8 hours, 16 hours, 24 hours or until maxPeriod is reached. If the retry attempt for the maxPeriod is reached, the maxPeriod will be used for all subsequent retries. If the minPeriod and the maxPeriod are defined as equal values, the period of time between retries will be equal to this value. Message delivery will be retried until the successful delivery or message validity or maxCount value is reached.</td>\n</tr>\n<tr>\n<td>sendingSpeed</td>\n<td>object</td>\n<td>Sending rate defined in number of messages sent per second, minute, hour or day. First message will be sent immediately (or at sendAt time if scheduling is used) and subsequent messages will be sent respecting defined speed. For example, if sendingSpeed is defined as 10 messages per hour, messages will be sent every 6 minutes. If this parameter is defined, validityPeriod is ignored.</td>\n</tr>\n<tr>\n<td>machineDetection</td>\n<td>string</td>\n<td>Used for enabling detection of answering machine after the call has been answered. It can be set to hangup or continue. When set to hangup, if a machine is detected call will hang up. When set to continue, if a machine is detected, then voice message starts playing into voice mail after the answering message is finished with its greeting. If machineDetection is used, there is a minimum of 4 seconds detection time, which can result in delay of playing the message. Answering machine detection is additionally charged. For more information please contact your account manager and check documentation on Answering Machine Detection.</td>\n</tr>\n<tr>\n<td>deliveryTimeWindow</td>\n<td>object</td>\n<td>Scheduling object that allows setting up detailed time windows in which the message can be sent. Consists of from, to and days properties. Days property is mandatory. Days in the week are written as their full names: Monday-Sunday. Days parameter must be populated as a list, between two square brackets. Example: ['MONDAY', 'TUESDAY', 'WEDNESDAY']. From and to properties should be either both included, to allow finer time window granulation or both omitted, to include whole days in the delivery time window. From and to parameters are objects, that consist of hour and minute fields that hold integer values. For example, from: [ hour: 15, minute:45 ]. For complete json, please check out our example. Note: delivery time window is set in UTC timezone.</td>\n</tr>\n</tbody>\n</table>\n</div><pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">destinations\": [\n        {\n          \"to\": \"\",\n          \"messageId\": \"\"\n        },\n        {\n          \"to\": \"\"\n        }\n      ]\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>The ID that uniquely identifies the message sent</td>\n</tr>\n<tr>\n<td>to</td>\n<td>string</td>\n<td>Required  <br />  <br />Message destination addresses. Destination address must be in the E.164 standard format (Example: 46701234567).</td>\n</tr>\n</tbody>\n</table>\n</div><pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">voice\": {\n        \"name\": \"\",\n        \"gender\": \"\"\n      }\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>Gender of the voice. Can be male or female.</td>\n</tr>\n<tr>\n<td>gender</td>\n<td>string</td>\n<td>Name of the voice. Example: Joanna.</td>\n</tr>\n</tbody>\n</table>\n</div><pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">callTransfers\": [\n        {\n          \"equals\": \"\",\n          \"transferTo\": \"\",\n          \"callTransferMaxDuration\": ,\n          \"if\": \"\"\n        }\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>equals</td>\n<td>string</td>\n<td>Criteria for establishing call transfer, if dtmf is evaluated.</td>\n</tr>\n<tr>\n<td>transferTo</td>\n<td>string</td>\n<td>Phone number of the recipient that will receive transferred call. Must be written in E.164 standard (Example: 46701234567).</td>\n</tr>\n<tr>\n<td>callTransferMaxDuration</td>\n<td>integer</td>\n<td>Maximum duration of the transferred call, specified in seconds.</td>\n</tr>\n<tr>\n<td>if</td>\n<td>string</td>\n<td>Specifies what to evaluate. Can be dtmf or anyDtmf.</td>\n</tr>\n</tbody>\n</table>\n</div><pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">\"retry\": {\n        \"minPeriod\": ,\n        \"maxPeriod\": ,\n        \"maxCount\": \n      }\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>minPeriod</td>\n<td>integer</td>\n<td>Required  <br />  <br />Defines the maximum waiting time (in minutes) after the previous failed attempt to try to deliver the message again.</td>\n</tr>\n<tr>\n<td>maxPeriod</td>\n<td>integer</td>\n<td>Required  <br />  <br />Defines the minimal waiting time (in minutes) after the previous failed attempt to try to deliver the message again.</td>\n</tr>\n<tr>\n<td>maxCount</td>\n<td>integer [ -32768 .. 32767 ]</td>\n<td>Required  <br />  <br />Specify the maximum number of retry attempts. Maximum value of the maxCount is 4. If the value is higher than 4, it will be set to 4.  <br /></td>\n</tr>\n</tbody>\n</table>\n</div><pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">\"sendingSpeed\": {\n        \"speed\":,\n        \"timeUnit\": \"\"\n      }\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>speed</td>\n<td>integer</td>\n<td>Defines the number of messages that will be sent per specified time unit.</td>\n</tr>\n<tr>\n<td>timeUnit</td>\n<td>string</td>\n<td>Defines time unit used for calculating sending speed. Possible values: second, minute, hour and day.</td>\n</tr>\n</tbody>\n</table>\n</div><pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\"> \"deliveryTimeWindow\": {\n        \"from\": {\n          \"hour\": ,\n          \"minute\": \n        },\n        \"to\": {\n          \"hour\": ,\n          \"minute\": \n        },\n        \"days\": [\n          \"\",\n          \"\",\n          \"\",\n          \"\",\n          \"\",\n          \"\",\n          \"\"\n        ]\n      }\n    }\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>days</td>\n<td>Array of strings</td>\n<td>Items Enum: \"MONDAY\" \"TUESDAY\" \"WEDNESDAY\" \"THURSDAY\" \"FRIDAY\" \"SATURDAY\" \"SUNDAY\"</td>\n</tr>\n<tr>\n<td>from</td>\n<td>object</td>\n<td>Required.  <br />  <br />  <br /></td>\n</tr>\n<tr>\n<td>to</td>\n<td>object</td>\n<td>Required</td>\n</tr>\n</tbody>\n</table>\n</div><pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">\"from\": {\n          \"hour\": ,\n          \"minute\": \n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>hour</td>\n<td>integer</td>\n<td>Required</td>\n</tr>\n<tr>\n<td>minute</td>\n<td>integer</td>\n<td>Required</td>\n</tr>\n</tbody>\n</table>\n</div><pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">to\": {\n          \"hour\": ,\n          \"minute\": \n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>hour</td>\n<td>integer</td>\n<td>Required</td>\n</tr>\n<tr>\n<td>minute</td>\n<td>integer</td>\n<td>Required</td>\n</tr>\n</tbody>\n</table>\n</div><h1 id=\"languages\">Languages</h1>\n<p>List of supported languages:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Language</th>\n<th>Language shortcut</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>English</td>\n<td>en</td>\n</tr>\n<tr>\n<td>English (British)</td>\n<td>en-gb</td>\n</tr>\n<tr>\n<td>English (Australian)</td>\n<td>en-au</td>\n</tr>\n<tr>\n<td>English (Indian)</td>\n<td>en-in</td>\n</tr>\n<tr>\n<td>English (Welsh)</td>\n<td>en-gb-wls</td>\n</tr>\n<tr>\n<td>Spanish</td>\n<td>es</td>\n</tr>\n<tr>\n<td>Catalan</td>\n<td>ca</td>\n</tr>\n<tr>\n<td>Chinese-Simplified</td>\n<td>zh-cn</td>\n</tr>\n<tr>\n<td>Chinese-Traditional</td>\n<td>zh-tw</td>\n</tr>\n<tr>\n<td>Danish</td>\n<td>da</td>\n</tr>\n<tr>\n<td>Dutch</td>\n<td>nl</td>\n</tr>\n<tr>\n<td>French</td>\n<td>fr</td>\n</tr>\n<tr>\n<td>German</td>\n<td>de</td>\n</tr>\n<tr>\n<td>Italian</td>\n<td>it</td>\n</tr>\n<tr>\n<td>Japanese</td>\n<td>ja</td>\n</tr>\n<tr>\n<td>Korean</td>\n<td>ko</td>\n</tr>\n<tr>\n<td>Norwegian</td>\n<td>no</td>\n</tr>\n<tr>\n<td>Polish</td>\n<td>pl</td>\n</tr>\n<tr>\n<td>Portuguese</td>\n<td>pt-pt</td>\n</tr>\n<tr>\n<td>Portuguese - Brazilian</td>\n<td>pt-br</td>\n</tr>\n<tr>\n<td>Russian</td>\n<td>ru</td>\n</tr>\n<tr>\n<td>Swedish</td>\n<td>sv</td>\n</tr>\n<tr>\n<td>Finnish</td>\n<td>fi</td>\n</tr>\n<tr>\n<td>Turkish</td>\n<td>tr</td>\n</tr>\n<tr>\n<td>Welsh</td>\n<td>wls</td>\n</tr>\n</tbody>\n</table>\n</div><h1 id=\"response-format\">Response format</h1>\n<p>If successful, the response header HTTP status code will be <code>200 OK</code> and the message will be sent.</p>\n<p>If you try to send the message without authorization, you will receive a <code>401 Unauthorized</code> error.</p>\n<h2 id=\"voiceresponse\">VoiceResponse</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the request. Bulk ID will be received when a message is sent to more than one destination address.</td>\n</tr>\n<tr>\n<td><em>messages</em></td>\n<td>VoiceResponseDetails</td>\n<td>Array of sent message objects, one object per every message.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"voiceresponsedetails\">VoiceResponseDetails</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>to</em></td>\n<td>String</td>\n<td>The message destination address.</td>\n</tr>\n<tr>\n<td><em>status</em></td>\n<td>Status</td>\n<td>Indicates whether the message has been sent successfully, not sent, delivered, not delivered, waiting for delivery or any other possible status.</td>\n</tr>\n<tr>\n<td><em>messageId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the sent message.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"status\">Status</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>groupId</em></td>\n<td>Int</td>\n<td>Status group ID.</td>\n</tr>\n<tr>\n<td><em>groupName</em></td>\n<td>String</td>\n<td>Status group name.</td>\n</tr>\n<tr>\n<td><em>id</em></td>\n<td>Int</td>\n<td>Status ID.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>Status name.</td>\n</tr>\n<tr>\n<td><em>description</em></td>\n<td>String</td>\n<td>Human readable description of the status.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-request-fields\">Additional request fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>messages[].notifyContentVersion</em></td>\n<td>Int</td>\n<td>Specifies the version of the Delivery report to be sent. Can be <code>1</code> (<a href=\"#programmable-communications/voice/receive-voice-delivery-reports-deprecated\">deprecated version 1</a>) or <code>2</code> (<a href=\"#programmable-communications/voice/receive-voice-delivery-reports\">current version 2</a>). The default is version 2. Read more.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["tts","3","advanced"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[],"_postman_id":"268d2b9c-7c8f-4ab1-86e5-5f9a791dd469"},{"name":"Get sent voice bulks","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","if ((pm.environment.get(\"voiceBulkId\") || \"\")) {","waitUntil(function (cb) { api(\"GET\", \"/tts/3/bulks?bulkId=\" + pm.environment.get(\"voiceBulkId\"), null, function (e, r) { cb(r && r.code === 200); }); }, 12, 3000, function () {});","}"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"bulkId\", \"sendAt\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});"],"type":"text/javascript","packages":{}}}],"id":"bfc2556a-73ab-40cd-baed-2336080a847c","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/tts/3/bulks?bulkId={{voiceBulkId}}","description":"<p>Get sent bulks.</p>\n<p>This method will return information about the scheduled time for a unique bulk message. Canceling and rescheduling are supported only when the voice message request contains at least one message and the message bulkId is unique.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Unique ID of the bulk.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>Unique ID of the bulk.</td>\n</tr>\n<tr>\n<td><em>sendAt</em></td>\n<td>String</td>\n<td>Timestamp when bulk is scheduled.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["tts","3","bulks"],"host":["go2","vhdmedia","se"],"query":[{"description":{"content":"<p>Unique ID of the bulk.</p>\n","type":"text/plain"},"key":"bulkId","value":"{{voiceBulkId}}"}],"variable":[]}},"response":[{"id":"c8f5fb4b-60a2-496f-82c9-38095cc30f9b","name":"200 - Bulk response","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/tts/3/bulks?bulkId={{voiceBulkId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["tts","3","bulks"],"query":[{"key":"bulkId","value":"{{voiceBulkId}}","description":"Unique ID of the bulk."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"bulkId\": \"5028e2d42f19-42f1-4656-351e-a42c191e5fd2\",\n  \"sendAt\": \"2023-09-26T14:07:35.000+0000\"\n}"},{"id":"8b3b7f89-12be-4b2e-a898-a9a4e32cb509","name":"400 - Bad request","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/tts/3/bulks?bulkId={{voiceBulkId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["tts","3","bulks"],"query":[{"key":"bulkId","value":"{{voiceBulkId}}","description":"Unique ID of the bulk."}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"BAD_REQUEST\",\n      \"text\": \"Bad request\"\n    }\n  }\n}"},{"id":"75e0fdc1-f48a-4151-bd0f-5f491706a76c","name":"401 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/tts/3/bulks?bulkId={{voiceBulkId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["tts","3","bulks"],"query":[{"key":"bulkId","value":"{{voiceBulkId}}","description":"Unique ID of the bulk."}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"327b9c4f-9fd2-4a9e-9a14-c706f5dae253","name":"403 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/tts/3/bulks?bulkId={{voiceBulkId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["tts","3","bulks"],"query":[{"key":"bulkId","value":"{{voiceBulkId}}","description":"Unique ID of the bulk."}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"841aec46-def7-43ee-9cd9-9a337163e8bc","name":"429 - Too many requests response","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/tts/3/bulks?bulkId={{voiceBulkId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["tts","3","bulks"],"query":[{"key":"bulkId","value":"{{voiceBulkId}}","description":"Unique ID of the bulk."}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"f632b3fc-ab4d-4446-acf0-71bbc29de297","name":"500 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/tts/3/bulks?bulkId={{voiceBulkId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["tts","3","bulks"],"query":[{"key":"bulkId","value":"{{voiceBulkId}}","description":"Unique ID of the bulk."}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"bfc2556a-73ab-40cd-baed-2336080a847c"},{"name":"Get sent voice bulk status","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","if (!(pm.environment.get(\"voiceBulkId\") || \"\")) { skip(\"voiceBulkId is not set\"); }"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"bulkId\", \"status\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});"],"type":"text/javascript","packages":{}}}],"id":"c41ae7c8-8fa9-4eac-aaee-d59805618a6a","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/tts/3/bulks/status?bulkId={{voiceBulkId}}","description":"<p>Get sent bulk's status.</p>\n<p>This method allows you to get status of scheduled TTS bulk.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Unique ID of the bulk.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>Unique ID of the bulk.</td>\n</tr>\n<tr>\n<td><em>status</em></td>\n<td>String</td>\n<td><strong>Required.</strong> New status of the bulk. One of: <code>PENDING</code>, <code>PAUSED</code>, <code>PROCESSING</code>, <code>CANCELED</code>, <code>FINISHED</code>, <code>FAILED</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["tts","3","bulks","status"],"host":["go2","vhdmedia","se"],"query":[{"description":{"content":"<p>Unique ID of the bulk.</p>\n","type":"text/plain"},"key":"bulkId","value":"{{voiceBulkId}}"}],"variable":[]}},"response":[{"id":"dd22f1e9-20db-4cd0-b7dd-d3725a8667b3","name":"200 - Bulk status response","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/tts/3/bulks/status?bulkId={{voiceBulkId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["tts","3","bulks","status"],"query":[{"key":"bulkId","value":"{{voiceBulkId}}","description":"Unique ID of the bulk."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"bulkId\": \"5028e2d42f19-42f1-4656-351e-a42c191e5fd2\",\n  \"status\": \"PENDING\"\n}"},{"id":"79a3b3cf-4227-4c1a-ba0d-6089708505bf","name":"400 - Bad request","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/tts/3/bulks/status?bulkId={{voiceBulkId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["tts","3","bulks","status"],"query":[{"key":"bulkId","value":"{{voiceBulkId}}","description":"Unique ID of the bulk."}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"BAD_REQUEST\",\n      \"text\": \"Bad request\"\n    }\n  }\n}"},{"id":"d162668e-3697-4039-a3bd-1cfe2ec93753","name":"401 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/tts/3/bulks/status?bulkId={{voiceBulkId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["tts","3","bulks","status"],"query":[{"key":"bulkId","value":"{{voiceBulkId}}","description":"Unique ID of the bulk."}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"c9042adc-7f6b-469e-b04e-b60e997c4d77","name":"403 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/tts/3/bulks/status?bulkId={{voiceBulkId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["tts","3","bulks","status"],"query":[{"key":"bulkId","value":"{{voiceBulkId}}","description":"Unique ID of the bulk."}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"10a911fc-8d65-4969-8cc8-e1118af1f797","name":"429 - Too many requests response","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/tts/3/bulks/status?bulkId={{voiceBulkId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["tts","3","bulks","status"],"query":[{"key":"bulkId","value":"{{voiceBulkId}}","description":"Unique ID of the bulk."}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"4fe9d96e-05fd-428a-95aa-1751cc308bdd","name":"500 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/tts/3/bulks/status?bulkId={{voiceBulkId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["tts","3","bulks","status"],"query":[{"key":"bulkId","value":"{{voiceBulkId}}","description":"Unique ID of the bulk."}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"c41ae7c8-8fa9-4eac-aaee-d59805618a6a"},{"name":"Manage sent voice bulk status","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","if (!(pm.environment.get(\"voiceBulkId\") || \"\")) { skip(\"voiceBulkId is not set\"); }"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"bulkId\", \"status\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});"],"type":"text/javascript","packages":{}}}],"id":"fc191c67-3fcd-4a95-849f-c83ba2577ded","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"status\": \"PAUSED\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/tts/3/bulks/status?bulkId={{voiceBulkId}}","description":"<p>Manage sent bulk's status.</p>\n<p>This method allows you to manage statuses of scheduled TTS bulk. Messages scheduled with the sendAt or sending speed parameter can be paused, resumed or canceled by changing the message status, or rescheduled using the bulkId parameter as an identifier. Only voice messages that were not already sent can be canceled.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Unique ID of the bulk.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>status</em></td>\n<td>String</td>\n<td><strong>Required.</strong> New status of the bulk. One of: <code>PENDING</code>, <code>PAUSED</code>, <code>PROCESSING</code>, <code>CANCELED</code>, <code>FINISHED</code>, <code>FAILED</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>Unique ID of the bulk.</td>\n</tr>\n<tr>\n<td><em>status</em></td>\n<td>String</td>\n<td><strong>Required.</strong> New status of the bulk. One of: <code>PENDING</code>, <code>PAUSED</code>, <code>PROCESSING</code>, <code>CANCELED</code>, <code>FINISHED</code>, <code>FAILED</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["tts","3","bulks","status"],"host":["go2","vhdmedia","se"],"query":[{"description":{"content":"<p>Unique ID of the bulk.</p>\n","type":"text/plain"},"key":"bulkId","value":"{{voiceBulkId}}"}],"variable":[]}},"response":[{"id":"37001e55-1e9f-4d25-8ab2-c3614dda27b9","name":"200 - Bulk status response","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"status\": \"PENDING\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/tts/3/bulks/status?bulkId={{voiceBulkId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["tts","3","bulks","status"],"query":[{"key":"bulkId","value":"{{voiceBulkId}}","description":"Unique ID of the bulk."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"bulkId\": \"5028e2d42f19-42f1-4656-351e-a42c191e5fd2\",\n  \"status\": \"PENDING\"\n}"},{"id":"17a43a32-1968-4012-a206-2b91f72a4363","name":"400 - Bad request","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"status\": \"PENDING\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/tts/3/bulks/status?bulkId={{voiceBulkId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["tts","3","bulks","status"],"query":[{"key":"bulkId","value":"{{voiceBulkId}}","description":"Unique ID of the bulk."}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"BAD_REQUEST\",\n      \"text\": \"Bad request\"\n    }\n  }\n}"},{"id":"706c722b-1b7b-48b5-9536-dd9ed7a54c5e","name":"401 - Example","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"status\": \"PENDING\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/tts/3/bulks/status?bulkId={{voiceBulkId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["tts","3","bulks","status"],"query":[{"key":"bulkId","value":"{{voiceBulkId}}","description":"Unique ID of the bulk."}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"3c2de6e2-f00d-41a6-9c3e-652e31f4cc66","name":"403 - Example","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"status\": \"PENDING\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/tts/3/bulks/status?bulkId={{voiceBulkId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["tts","3","bulks","status"],"query":[{"key":"bulkId","value":"{{voiceBulkId}}","description":"Unique ID of the bulk."}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"42d32fd1-4627-4965-be81-fe8f413e3ad3","name":"429 - Too many requests response","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"status\": \"PENDING\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/tts/3/bulks/status?bulkId={{voiceBulkId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["tts","3","bulks","status"],"query":[{"key":"bulkId","value":"{{voiceBulkId}}","description":"Unique ID of the bulk."}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"3d05ec08-3c98-4262-908c-b2657cee7fe4","name":"500 - Example","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"status\": \"PENDING\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/tts/3/bulks/status?bulkId={{voiceBulkId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["tts","3","bulks","status"],"query":[{"key":"bulkId","value":"{{voiceBulkId}}","description":"Unique ID of the bulk."}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"fc191c67-3fcd-4a95-849f-c83ba2577ded"},{"name":"Reschedule sent voice bulk","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","if (!(pm.environment.get(\"voiceBulkId\") || \"\")) { skip(\"voiceBulkId is not set\"); } else { pause(3000, function () {}); }"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"bulkId\", \"sendAt\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});"],"type":"text/javascript","packages":{}}}],"id":"63f3eca2-3fc2-4b40-be2d-812c6df3b164","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"sendAt\": \"{{sendAt}}\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/tts/3/bulks?bulkId={{voiceBulkId}}","description":"<blockquote>\n<p><strong>Pause first.</strong> To be safe, set the bulk to <code>PAUSED</code> with <strong>Manage sent voice bulk status</strong> before rescheduling it, as for scheduled SMS and email.</p>\n</blockquote>\n<p>Reschedule sent bulk.</p>\n<p>This method allows you to reschedule scheduled TTS bulk. Messages scheduled with the sendAt or Sending speed parameter can be paused, resumed or canceled by changing the message status, or rescheduled using the bulkId parameter as an identifier. Rescheduling is only possible if the bulk status is PAUSED.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Unique ID of the bulk.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>sendAt</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Rescheduled timestamp of the bulk.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>Unique ID of the bulk.</td>\n</tr>\n<tr>\n<td><em>sendAt</em></td>\n<td>String</td>\n<td>Timestamp when bulk is scheduled.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["tts","3","bulks"],"host":["go2","vhdmedia","se"],"query":[{"description":{"content":"<p>Unique ID of the bulk.</p>\n","type":"text/plain"},"key":"bulkId","value":"{{voiceBulkId}}"}],"variable":[]}},"response":[{"id":"406dab9a-6359-4f4f-a512-2e141247b14a","name":"200 - Bulk response","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"sendAt\": \"2023-09-26T14:07:35.000+0000\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/tts/3/bulks?bulkId={{voiceBulkId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["tts","3","bulks"],"query":[{"key":"bulkId","value":"{{voiceBulkId}}","description":"Unique ID of the bulk."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"bulkId\": \"5028e2d42f19-42f1-4656-351e-a42c191e5fd2\",\n  \"sendAt\": \"2023-09-26T14:07:35.000+0000\"\n}"},{"id":"1d1619a3-fbfb-45c4-8abf-c93115f56f1f","name":"400 - Bad request","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"sendAt\": \"2023-09-26T14:07:35.000+0000\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/tts/3/bulks?bulkId={{voiceBulkId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["tts","3","bulks"],"query":[{"key":"bulkId","value":"{{voiceBulkId}}","description":"Unique ID of the bulk."}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"BAD_REQUEST\",\n      \"text\": \"Bad request\"\n    }\n  }\n}"},{"id":"f19bda76-4355-4442-b74a-452329971893","name":"401 - Example","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"sendAt\": \"2023-09-26T14:07:35.000+0000\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/tts/3/bulks?bulkId={{voiceBulkId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["tts","3","bulks"],"query":[{"key":"bulkId","value":"{{voiceBulkId}}","description":"Unique ID of the bulk."}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"e854c19a-fcd9-49da-a58e-1d2df0de696e","name":"403 - Example","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"sendAt\": \"2023-09-26T14:07:35.000+0000\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/tts/3/bulks?bulkId={{voiceBulkId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["tts","3","bulks"],"query":[{"key":"bulkId","value":"{{voiceBulkId}}","description":"Unique ID of the bulk."}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"6239b6a5-fb69-414f-98aa-e9294f115181","name":"429 - Too many requests response","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"sendAt\": \"2023-09-26T14:07:35.000+0000\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/tts/3/bulks?bulkId={{voiceBulkId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["tts","3","bulks"],"query":[{"key":"bulkId","value":"{{voiceBulkId}}","description":"Unique ID of the bulk."}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"22d6d2ce-830d-437c-ab3d-fc60d83c8c9c","name":"500 - Example","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"sendAt\": \"2023-09-26T14:07:35.000+0000\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/tts/3/bulks?bulkId={{voiceBulkId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["tts","3","bulks"],"query":[{"key":"bulkId","value":"{{voiceBulkId}}","description":"Unique ID of the bulk."}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"63f3eca2-3fc2-4b40-be2d-812c6df3b164"},{"name":"Cancel the scheduled voice message","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","if (!(pm.environment.get(\"voiceBulkId\") || \"\")) { skip(\"voiceBulkId is not set\"); }"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests for Cancel the scheduled voice message.","pm.test(\"Status code is 200\", function () { pm.expect(pm.response.code).to.eql(200); });","pm.test(\"The bulk is canceled, so no call is ever placed\", function () { pm.expect(pm.response.json().status).to.eql(\"CANCELED\"); });"],"type":"text/javascript","packages":{}}}],"id":"e92bb22f-bf6a-42af-baba-07e3366772a8","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"status\": \"CANCELED\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/tts/3/bulks/status?bulkId={{voiceBulkId}}","description":"<p>Cancel a scheduled voice bulk so the call is never placed.</p>\n<p>Manage sent bulk's status.</p>\n<p>This method allows you to manage statuses of scheduled TTS bulk. Messages scheduled with the sendAt or sending speed parameter can be paused, resumed or canceled by changing the message status, or rescheduled using the bulkId parameter as an identifier. Only voice messages that were not already sent can be canceled.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Unique ID of the bulk.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>status</em></td>\n<td>String</td>\n<td><strong>Required.</strong> New status of the bulk. One of: <code>PENDING</code>, <code>PAUSED</code>, <code>PROCESSING</code>, <code>CANCELED</code>, <code>FINISHED</code>, <code>FAILED</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>Unique ID of the bulk.</td>\n</tr>\n<tr>\n<td><em>status</em></td>\n<td>String</td>\n<td><strong>Required.</strong> New status of the bulk. One of: <code>PENDING</code>, <code>PAUSED</code>, <code>PROCESSING</code>, <code>CANCELED</code>, <code>FINISHED</code>, <code>FAILED</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["tts","3","bulks","status"],"host":["go2","vhdmedia","se"],"query":[{"description":{"content":"<p>Unique ID of the bulk.</p>\n","type":"text/plain"},"key":"bulkId","value":"{{voiceBulkId}}"}],"variable":[]}},"response":[],"_postman_id":"e92bb22f-bf6a-42af-baba-07e3366772a8"}],"id":"8bad8dba-0c59-4007-8f4b-e49db079c9fc","description":"<p>Send voice messages (text to speech or an audio file), get logs and delivery reports, manage scheduled voice bulks, and list the available voices. Voice send requests place real calls to the recipients, so the examples use the sample number 46731234567, which is replaced by your testNumber when you run them.</p>\n","_postman_id":"8bad8dba-0c59-4007-8f4b-e49db079c9fc"},{"name":"INTERACTIVE VOICE RESPONSE","item":[{"name":"IVR variables and actions","item":[],"id":"e83e69e9-4cd9-427a-b5ff-a7d695524a91","description":"<h1 id=\"ivr-variables-and-actions\">IVR Variables and Actions</h1>\n<p>Let's learn about IVR building blocks</p>\n<h2 id=\"variables\">Variables</h2>\n<p>During the scenario execution, some actions may write to or read from variables. All variables are strings and defined globally in the entire scope of the scenario. The system currently provides the following read-only variables that are populated for each call:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>from - the caller ID, source address (E164)\nto - the callee ID, destination address (E164)\nstartTime - the start time of the call (YYYY-MM-DD hh:mm:ss)\nanswerTime - the time the user answered the call (YYYY-MM-DD hh:mm:ss)\n\n</code></pre><h2 id=\"actions\">Actions</h2>\n<p>Let's take a look at the available scenario actions:</p>\n<ul>\n<li>Say</li>\n<li>Collect</li>\n<li>Dial</li>\n<li>Play</li>\n<li>Call API</li>\n<li>Switch - Case</li>\n<li>Repeat - Until</li>\n<li>While do</li>\n<li>Hang up</li>\n</ul>\n<p>Also, <a href=\"https://dev.vhdmedia.se/#badb0b71-13a5-4bd8-a7ba-2ca338b66972\">IVR use cases</a> contain simple examples you can use for your own scenarios.</p>\n<h2 id=\"say\">Say</h2>\n<p>A Say action performs the playback of TTS synthesized audio based on its parameters. Message text can be up to 1400 characters long.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>say</td>\n<td>String</td>\n<td>message text</td>\n</tr>\n<tr>\n<td>options &gt; language</td>\n<td>String</td>\n<td>Must be defined for correct pronunciation. In the Languages section, you can find the list of languages that we support.</td>\n</tr>\n<tr>\n<td>options &gt; speechRate</td>\n<td>Double</td>\n<td>Must be within [0.5 - 2.0] range, default value is 1.</td>\n</tr>\n</tbody>\n</table>\n</div><p>JSON</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>{\n  \"say\": \"Dear Customer, we will show you all actions in one example. If you want to perform dial action press one. If you press number two we will play message from a url. Number three in this case is reserved for call web api's POST method. If you want call web api's GET method press four. For web api's PUT method you will press five. Exit is your's choice, press asterisk.\"\n}\n\n</code></pre><h2 id=\"collect\">Collect</h2>\n<p>A Collect action performs DTMF input reading and saving from the user's phone.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>collectInto</td>\n<td>String</td>\n<td>the name of the variable to set</td>\n</tr>\n<tr>\n<td>options &gt; maxInputLength</td>\n<td>Integer</td>\n<td>the maximum number of DTMF tones to wait for, 0 for unlimited.</td>\n</tr>\n</tbody>\n</table>\n</div><p>The variable name cannot be one of the reserved ones, except for dtmf. A Collect is internally parameterized with two parameters: responseTimeout and digitTimeout. The responseTimeout is the time the IVR platform waits for the user to press the first key. After the first key is pressed, the platform waits for any additional keys for the digitTimeout. These variables are 5 and 2 seconds, respectively.<br />The # key cannot be collected, as it is reserved for user input termination (i.e. the IVR platform automatically stops reading user input after receiving #, without storing it).</p>\n<p>JSON</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>{\n  \"collectInto\": \"myVariable\",\n  \"options\": {\n    \"maxInputLength\": 1\n  }\n}\n\n</code></pre><h2 id=\"dial\">Dial</h2>\n<p>A Dial action performs a call redirection, joining the user's call with another destination. This action is final, meaning that it cannot be followed by an action (it has to be the last action within its branch, not even followed by a Hangup).</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Note</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>dial</td>\n<td>String</td>\n<td>must be a valid E164 MSISDN; the parameter can be constructed using variables</td>\n</tr>\n</tbody>\n</table>\n</div><p>JSON</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>{\n  \"dial\": \"41793026731\"\n}\n\n</code></pre><h2 id=\"play\">Play</h2>\n<p>A Play action performs playback of audio provided by the client’s URL.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Default</th>\n<th>Note</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>playFromUrlString</td>\n<td>string</td>\n<td>(required)</td>\n<td>(required)</td>\n</tr>\n</tbody>\n</table>\n</div><p>JSON</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>{\n  \"playFromUrl\": \"http://www.example.com/voice/sound.mp3\"\n}\n\n</code></pre><h2 id=\"call-api\">Call API</h2>\n<p>A Call API Action performs an HTTP request to a client's endpoint, and (if told to) processes the response data.</p>\n<p>If collectResponse is set, the system will attempt to parse the response from the server. The parsing algorithm is quite naive: based on the Accept header (or Content-Type header, if Accept header is missing), it will attempt to parse the response into a simple one-level object, and save all its fields as variables. Any response property with a reserved name is ignored.</p>\n<p>The response payload is limited by size to 32kB. If exceeded, the scenario is aborted. Any I/O exception during the action will be raised, interrupting scenario execution. Currently, this is not applied for non-200 HTTP status codes received (such responses are ignored).</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Default</th>\n<th>Note</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>request</td>\n<td>String</td>\n<td>(required)</td>\n<td>the URL to target</td>\n</tr>\n<tr>\n<td>options &gt; method</td>\n<td>String</td>\n<td>(required)</td>\n<td>GET, POST, PUT, DELETE</td>\n</tr>\n<tr>\n<td>options &gt; headers</td>\n<td>Object</td>\n<td>(required, for content-type)</td>\n<td></td>\n</tr>\n<tr>\n<td>options &gt; body</td>\n<td>String or Object</td>\n<td>(required for body-enclosing methods)</td>\n<td>the request body to send</td>\n</tr>\n<tr>\n<td>options &gt; collectResponse</td>\n<td>boolean</td>\n<td>false</td>\n<td>if set, will cause the system to process the response</td>\n</tr>\n</tbody>\n</table>\n</div><p>JSON</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>{\n  \"request\": \"https://requestb.in/12345\",\n  \"options\": {\n    \"method\": \"POST\",\n    \"headers\": {\n      \"content-type\": \"application/json\"\n    },\n    \"body\": {\n      \"payload\": \"${to} finished the IVR.\"\n    }\n  }\n}\n\n</code></pre><p>JSON</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>{\n  \"request\": \"https://requestb.in/12345\",\n  \"options\": {\n    \"method\": \"GET\",\n    \"headers\": {\n      \"accept\": \"application/xml\",\n      \"authorization\": \"Basic dXNlcjpwYXNz\"\n    },\n    \"collectResponse\": true\n  }\n}\n\n</code></pre><p>JSON</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>{\n  \"request\": \"https://requestb.in/12345\",\n  \"options\": {\n    \"method\": \"PUT\",\n    \"headers\": {\n      \"content-type\": \"application/xml\",\n      \"accept\": \"application/xml\"\n    },\n    \"body\": \"${to} finished the IVR.\",\n    \"collectResponse\": true\n  }\n}\n\n</code></pre><h2 id=\"switch---case\">Switch - Case</h2>\n<p>A Switch - Case action takes a saved variable (obtained via either a Collect or a Call API action) and performs flow control based on it. It works similarly to the switch case block, using case-sensitive comparison.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Default</th>\n<th>Note</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>switch</td>\n<td>String</td>\n<td>(required)</td>\n<td>name of the variable whose value to inspect</td>\n</tr>\n<tr>\n<td>case</td>\n<td>Object</td>\n<td>(required)</td>\n<td>object whose keys are possible variable values, and values are arrays of actions</td>\n</tr>\n<tr>\n<td>__default</td>\n<td>Array</td>\n<td></td>\n<td>array of actions to execute if none of the conditions above are met</td>\n</tr>\n</tbody>\n</table>\n</div><p>JSON</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>{\n  \"switch\": \"myVariable\",\n  \"case\": {\n    \"1\": [\n      {\n        \"dial\": \"46701234567\"\n      }\n    ],\n    \"2\": [\n      {\n        \"playFromUrl\": \"http://www.example.com/voice/advanced\"\n      }\n    ],\n    \"3\": [\n      {\n        \"request\": \"https://requestb.in/12345\",\n        \"options\": {\n          \"method\": \"POST\",\n          \"headers\": {\n            \"content-type\": \"application/json\"\n          },\n          \"body\": {\n            \"payload\": \"${to} finished the IVR.\"\n          }\n        }\n      }\n    ],\n    \"4\": [\n      {\n        \"request\": \"https://requestb.in/12345\",\n        \"options\": {\n          \"method\": \"GET\",\n          \"collectResponse\": true\n        }\n      }\n    ],\n    \"5\": [\n      {\n        \"request\": \"https://requestb.in/12345\",\n        \"options\": {\n          \"method\": \"PUT\",\n          \"headers\": {\n            \"content-type\": \"application/xml\",\n            \"accept\": \"application/xml\"\n          },\n          \"body\": \"${to} finished the IVR.\",\n          \"collectResponse\": true\n        }\n      }\n    ],\n    \"__default\": [\n      {\n        \"say\": \"Dear Customer, you pressed wrong number. Please, try again.\"\n      },\n      {\n        \"collectInto\": \"myVariable\",\n        \"options\": {\n          \"maxInputLength\": 1\n        }\n      }\n    ]\n  }\n}\n\n</code></pre><h2 id=\"repeat---until\">Repeat - Until</h2>\n<p>A Repeat - Until loop is a control flow statement that executes a block of code at least once, and then repeatedly executes the block, or not, depending on a given boolean condition in the until field.<br />Comparison is done using equal (==) or not equal (! =) operators.</p>\n<p>JSON</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>{\n  \"repeat\": [\n    { \"say\": \"For exit you must press one.\" },\n    { \"collectInto\": \"myVariable\" }\n  ],\n  \"until\": \"${myVariable} == 1\"\n}\n\n</code></pre><h2 id=\"while---do\">While - Do</h2>\n<p>Loops can execute a do field block of code as long as a specified condition is true in the while field. As with Repeat - Until, comparison is done using equal (==) or not equal (! =) operators.</p>\n<p>JSON</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>{\n    \"while\": \"${myVariable} != 1\",\n    \"do\": [\n        { \"say\": \"For exit you must press one.\" },\n        { \"collectInto\": \"myVariable\" }\n    ]\n}\n\n</code></pre><h2 id=\"hang-up\">Hang up</h2>\n<p>A Hangup action is a pseudo-action marking the end of the IVR flow execution, leading to the call actually being hung up.</p>\n<p>JSON</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>\"hangup\"\n\n</code></pre><h2 id=\"languanges\">Languanges</h2>\n<p>List of languages available for Say action:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Language</th>\n<th>Language shortcut</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>English</td>\n<td>en</td>\n</tr>\n<tr>\n<td>English (British)</td>\n<td>en-gb</td>\n</tr>\n<tr>\n<td>English (Australian)</td>\n<td>en-au</td>\n</tr>\n<tr>\n<td>English (Indian)</td>\n<td>en-in</td>\n</tr>\n<tr>\n<td>English (Welsh)</td>\n<td>en-gb-wls</td>\n</tr>\n<tr>\n<td>Spanish</td>\n<td>es</td>\n</tr>\n<tr>\n<td>Catalan</td>\n<td>ca</td>\n</tr>\n<tr>\n<td>Chinese-Simplified</td>\n<td>zh-cn</td>\n</tr>\n<tr>\n<td>Chinese-Traditional</td>\n<td>zh-tw</td>\n</tr>\n<tr>\n<td>Danish</td>\n<td>da</td>\n</tr>\n<tr>\n<td>Dutch</td>\n<td>nl</td>\n</tr>\n<tr>\n<td>French</td>\n<td>fr</td>\n</tr>\n<tr>\n<td>German</td>\n<td>de</td>\n</tr>\n<tr>\n<td>Italian</td>\n<td>it</td>\n</tr>\n<tr>\n<td>Japanese</td>\n<td>ja</td>\n</tr>\n<tr>\n<td>Korean</td>\n<td>ko</td>\n</tr>\n<tr>\n<td>Norwegian</td>\n<td>no</td>\n</tr>\n<tr>\n<td>Polish</td>\n<td>pl</td>\n</tr>\n<tr>\n<td>Portuguese</td>\n<td>pt-pt</td>\n</tr>\n<tr>\n<td>Portuguese - Brazilian</td>\n<td>pt-br</td>\n</tr>\n<tr>\n<td>Russian</td>\n<td>ru</td>\n</tr>\n<tr>\n<td>Swedish</td>\n<td>sv</td>\n</tr>\n<tr>\n<td>Finnish</td>\n<td>fi</td>\n</tr>\n<tr>\n<td>Turkish</td>\n<td>tr</td>\n</tr>\n<tr>\n<td>Welsh</td>\n<td>wls</td>\n</tr>\n</tbody>\n</table>\n</div>","_postman_id":"e83e69e9-4cd9-427a-b5ff-a7d695524a91"},{"name":"IVR use cases","item":[],"id":"d5a294ae-49b1-4b3e-8477-f0205fc23997","description":"<p>Just a few sample scenarios to inspire but possibilities are endless</p>\n<p>Various IVR scenarios could be created by combining available actions. Here are just a few samples that you might check out before creating your own.</p>\n<p>Scheduling an appointment<br />Checking order/delivery status<br />Cart abandonment</p>\n<h2 id=\"scheduling-an-appointment\">Scheduling an appointment</h2>\n<p>A simple use case to call a customer to schedule an appointment via IVR. The IVR workflow can offer the customer a range of appointment options. Here’s how this process would work.</p>\n<p>The client sets up a Scenario and uses the received ScenarioId to Launch Outbound IVR API. Our platform will initiate a call to each destination phone number specified. Once the call is answered, the IVR flow will start playing an audio message inviting the customer to pick one of the available appointment times using DTMF keys.</p>\n<p>Here’s how the steps look. Code samples and a flow diagram are below:</p>\n<ol>\n<li>Call customer phone number</li>\n<li>Once the customer picks up the phone, the IVR message is played:<br /> <em>Dear client, we would like to schedule an appointment for you on October 14th. Available times__are 10:00 am, 11 am, and 2:00 pm. Please press 1 for 10 am, 2 for 11 am, or 3 for a 2 pm__appointment. If none of these work for you, we will send a new message suggesting different time__slots.</em></li>\n<li>Collect action gathers the DTMF code entered by end user</li>\n<li>User input is analyzed and, based on the DTMF, one of the following responses is played::</li>\n</ol>\n<ul>\n<li>4a For DTMF 1, 2 or 3: Thank you. Your appointment is scheduled.</li>\n<li>4b For any other DTMF or no DTMF: Thank you We will suggest another time slot once it’s available.</li>\n</ul>\n<h2 id=\"example\">Example</h2>\n<p>JSON</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>{\n  \"name\": \"scenario\",\n  \"script\": [\n    {\n      \"say\": \"Dear client, we would like to schedule an appointment on 14.10. Available time is 10:00 am, 11 am and 2:00 pm. Please press 1 for 10 am, 2 for 11 or 3 for a 2 pm meeting. If non of the above suits you, we will send new message suggesting different time frame.\"\n    },\n    {\n      \"collectInto\": \"scheduleTime\"\n    },\n    {\n      \"switch\": \"scheduleTime\",\n      \"case\": {\n        \"1\": [\n          {\n            \"say\": \"Thank you. Your appointment is scheduled for 10 am.\"\n          }\n        ],\n        \"2\":[\n          {\n            \"say\": \"Thank you. Your appointment is scheduled for 11 am.\"\n          }\n        ],\n        \"3\":[\n          {\n            \"say\": \"Thank you. Your appointment is scheduled for 2 pm.\"\n          }\n        ],\n        \"__default\": [\n          {\n            \"say\": \"Thank you  We will suggest another time slot once it’s available.\"\n          },\n          \"hangup\"\n        ]\n      }\n    },\n    { \"say\": \"Thank you. Your appointment is scheduled.\" },\n    \"hangup\"\n  ]\n}\n\n</code></pre><h2 id=\"cart-abandonment\">Cart abandonment</h2>\n<p>Client has an online store and everyday notices customers clicking and checking out products, even adding them to their shopping carts. But one thing is missing and it is the most important one - checkout and conclusion of the buying process. In order to remind customers and ask them why they did not finish the process, client could send an IVR survey that should give some context on what is going on when users interact with your page. Maybe there is something that needs to be changed in the online buying process or at least to know that some customers are not serious buyers.</p>\n<p>Let us break down this process in steps.</p>\n<ol>\n<li>Customer logs in to the web shop and stores a couple of products inside his shopping cart</li>\n<li>After some time he leaves the web shop without completing the buying process</li>\n<li>This is noticed by the client's back end system and this will trigger an IVR scenario ID towards that customer/destination</li>\n<li>Based on the scenario the customer can be asked the following question:<br /> <em>Dear customer we see that you have some goods in your cart. Would you like us to notify you__once the product in your basket becomes discounted? Press 1 for yes, press 2 for no, press 5 to__talk with an agent and get more information.</em></li>\n<li>Customer response will be collected and call API action will enable client to receive it</li>\n<li>Based on the response codes (DTMFs) the customer pressed, client will do according actions on his side like updating the CRM, calling the customer with more info etc.</li>\n</ol>\n<h2 id=\"example-1\">Example</h2>\n<p>JSON</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>{\n  \"name\": \"scenario\",\n  \"script\": [\n    {\n      \"say\": \"Dear customer we see that you have some goods in your cart. Would you like us to notify you once the product in your basket becomes discounted? Press 1 for yes, press 2 for no, press 5 to talk with an agent and get more information.\"\n    },\n    {\n      \"collectInto\": \"DTMFCode\"\n    },\n    {\n      \"switch\": \"DTMFCode\",\n      \"case\": {\n        \"5\": [\n          {\n            \"dial\": \"46701234567\"\n          }\n        ]\n      }\n    },\n    {\n      \"say\": \"Thank you.\"\n    },\n    \"hangup\"\n  ]\n}\n\n</code></pre>","_postman_id":"d5a294ae-49b1-4b3e-8477-f0205fc23997"},{"name":"Create a Voice IVR Scenario","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","(function () {","    api(\"GET\", \"/voice/ivr/1/scenarios\", null, function (e, r) {","        var j = jsonOf(r); var list = (Array.isArray(j) ? j : []).filter(function (s) { return s.name === \"Sample scenario\"; });","        (function next(i) { if (i >= list.length) { return; } api(\"DELETE\", \"/voice/ivr/1/scenarios/\" + list[i].id, null, function () { next(i + 1); }); })(0);","    });","})();"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"id\", \"name\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","","","","var j = pm.response.json();","pm.environment.set(\"id\", String(j.id));"],"type":"text/javascript","packages":{}}}],"id":"14dbb5aa-c1e5-4c06-bb32-5f9b0a133a73","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Sample scenario\",\n  \"description\": \"Say a message and hang up.\",\n  \"script\": [\n    {\n      \"say\": \"Hello from the VHD API\"\n    },\n    \"hangup\"\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/voice/ivr/1/scenarios","description":"<blockquote>\n<p><strong>Speech capture</strong> (<code>capture</code> with <code>speechOptions</code>) is not enabled on every account. On this account creating a scenario that uses it returns <code>400 Speech capture not enabled for the account</code>. The example below therefore only says a message; ask support to enable speech capture if you need it.</p>\n</blockquote>\n<p>This method allows you to create a Voice IVR Scenario.</p>\n<h3 id=\"request-rate-limit\">Request rate limit</h3>\n<p>1 requests / second (per account)</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>The name of IVR scenario.</td>\n</tr>\n<tr>\n<td>description</td>\n<td>string</td>\n<td>Description of IVR scenario.</td>\n</tr>\n<tr>\n<td>script  <br /></td>\n<td></td>\n<td>Required  <br />Array of Call API (object) or Capture (object) or Collect (object) or Dial (object) or Dial to Many (object) or Dial to WebRTC (object) or Dial to SIP trunk (object) or Dial to Conversations (object) or For-Each (object) or Go-To (object) or Hang-up (string) or If-Then-Else (object) or Machine Detection (string) or Pause (object) or Play (object) or Play From Recording (object) or Record (object) or Repeat-Until (object) or Repeat-While (object) or Say (object) or Send SMS (object) or Set Variable (object) or Switch-Case (object) or While-Do (object)  <br />Array of IVR actions defining scenario. NOTE: Answering Machine Detection, Call Recording and Speech Recognition (used for Capture action) are add-on features. To enable these add-ons, please contact our sales organisation.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Array [</p>\n<p>One of</p>\n<p><strong>Call API</strong></p>\n<p>Call API Action performs an HTTP request to a client’s endpoint, and (if told to) processes the response data. If collectResponse is set, the system will attempt to parse the response from the server. Our platform needs to be able to make HTTP requests to the specified endpoint.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>request</td>\n<td>string</td>\n<td>The URL to target</td>\n</tr>\n<tr>\n<td>options  <br />{  <br />method  <br />  <br />headers  <br />  <br />collectResponse  <br /></td>\n<td>object  <br />  <br />string  <br />  <br />object  <br />  <br />boolean</td>\n<td>Required  <br />  <br />GET, POST, PUT, DELETE  <br />  <br />HTTP headers  <br />  <br />If this field is set, the system will parse the response and save all its fields as variables inside scenario. Note: Parser ignores non-primitive fields and does not go deeper than the first level. For example, if the response is {\"letters\": \"abcd\", \"numbers\": 12345}, the system will store variables letters and numbers, with values abcd and 12345 respectively. Check the example Say action with Call Api Responses. Response that is parsed can only be in JSON or XML.  <br /></td>\n</tr>\n<tr>\n<td>actionId</td>\n<td>integer</td>\n<td>User-defined ID of an action that can be used with go-to action.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Capture</strong></p>\n<p>Capture action performs speech recognition of a specified duration. The recognized text can be used in other actions of the scenario.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>capture</td>\n<td>string</td>\n<td>Required.  <br />  <br />Variable name. If speech recognition matches one of the specified <code>keyPhrases</code>, a variable with this name will be set to match the keyphrase. Otherwise, this variable will be an <code>empty string</code>. Together with this variable, an implicit variable that contains the full text of the captured speech will be created. The name of this variable is constructed by adding <code>_Full</code> suffix to the variable name.  <br />  <br /></td>\n</tr>\n<tr>\n<td>timeout</td>\n<td>integer</td>\n<td>Number of seconds used for capturing speech or digits failover. Minimum value is 1 and maximum value is 30. Can be overriden with speechOptions.maxSilence.</td>\n</tr>\n<tr>\n<td>speechOptions  <br />{  <br />  <br />language  <br />  <br />  <br />  <br />  <br />keyPhrases  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />maxSilence  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />}</td>\n<td>obejct  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />array of strings  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />integer  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br /></td>\n<td>Required.  <br />  <br />  <br />Language used in speech that needs to be captured. For full list of supported languages see LINK.  <br />  <br />Array of keyphrases used for matching capturing speech. If full captured text contains one of the specified phrases, that phrase will be set in variable specified in capture parameter. If keyphrases are not set or no matching is done, variable will be set to empty string. Every keyphrase can contain up to 5 words and number of keyphrases is not limited.  <br />  <br />  <br />  <br />  <br />  <br />If used, this parameter defines the number of seconds of silence that will stop capturing. For example value of <code>3</code> defines that capturing stops as soon as 3 seconds of silence is detected or when timeout expires, whichever happens first. Minimum value is <code>1</code> and maximum value is <code>5</code>.</td>\n</tr>\n<tr>\n<td>dtmfOptions  <br />{  <br />  <br />maxInputLength  <br />  <br />  <br />  <br />  <br />  <br />mappedValues  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />}</td>\n<td>object  <br />  <br />  <br />integer  <br />  <br />  <br />  <br />  <br />  <br />object  <br />  <br /></td>\n<td><br />  <br />  <br />Maximum acceptable number of digits. Capturing is stopped after this number of digits has been entered. Max accepted value is 255. If not set, maximum value will be used.  <br />  <br />Map of expected collected DTMF values with some real meaning. (Example: if you have multilingual IVR, and option for users to press 1 to enter \"English\" menu, you can define {\"1\":\"English\"}, so the reporting and analysis will be easier). When this option is defined additional variable is present in the scenario. If you set your capture action variable name to myVar, then you will get additional variable myVar_Meaning containing the mapped value for a collected DTMF.</td>\n</tr>\n<tr>\n<td>sendToReports</td>\n<td>string</td>\n<td>Choose if you want to show DTMF inputs in Voice reports and logs. Options are: <code>ALWAYS</code> (always send - default value), <code>MASKED</code> (send masked - xxxx will be shown in reports and logs), <code>NEVER</code> (don't send - DTMF inputs will not be shown in reports and logs).  <br />  <br /></td>\n</tr>\n<tr>\n<td>actionId</td>\n<td>integer</td>\n<td>User-defined ID of an action that can be used with go-to action.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Collect</strong></p>\n<p>Collect action reads the DTMF input from the user’s phone and saves it into a variable. Saved variable can be used within the IVR in any other action that allows variable usage. (e.g. switch/case).</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>collectInto</td>\n<td>string</td>\n<td>Required.  <br />The name of the variable to set.</td>\n</tr>\n<tr>\n<td>options  <br />{  <br />maxInputLength  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />timeout  <br />  <br />  <br />  <br />sendToReports  <br />  <br />  <br />  <br />  <br />  <br />mappedValues  <br />  <br />}</td>\n<td>object  <br />  <br />integer  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />integer  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />object</td>\n<td>Required  <br />  <br />Maximum acceptable number of digits. Stops reading after maxdigits have been entered (without requiring the user to press '#' key). Max accepted value is 255. If set to 0 then max value is applied.  <br />  <br />Timeout in seconds for user to press the digit(s). Default value is 5. Max value is 30.  <br />  <br />  <br />Choose if you want to show DTMF inputs in Voice reports and logs. Options are: ALWAYS (always send - default value), MASKED (send masked - xxxx will be shown in reports and logs), NEVER (don't send - DTMF inputs will not be shown in reports and logs).  <br />  <br />Map of expected collected DTMF values with some real meaning. (Example: if you have multilingual IVR, and option for users to press 1 to enter \"English\" menu, you can define {\"1\":\"English\"}, so the reporting and analysis will be easier). When this option is defined additional variable is present in the scenario. If you set your collect action variable name to myVar, then you will get additional variable myVar_Meaning containing the mapped value for a collected DTMF.</td>\n</tr>\n<tr>\n<td>actionId</td>\n<td>integer</td>\n<td>User-defined ID of an action that can be used with go-to action.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Dial</strong></p>\n<p>Dial action performs a call redirection, joining the user's call with another destination. After Dial action the following actions are forbidden: Say, Collect, Dial, Dial to Many, Dial to WebRTC, Dial to SIP trunk, Dial to Conversations, Play, Record and Play from Recording.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>dial</td>\n<td>string</td>\n<td>Required.  <br />  <br />must be a valid E164 MSISDN; the parameter can be constructed using variables</td>\n</tr>\n<tr>\n<td>options  <br />{  <br />senderId  <br />  <br />  <br />  <br />  <br />  <br />maxCallDuration  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />}</td>\n<td>object  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />integer  <br />  <br />  <br />  <br /></td>\n<td>Required  <br />  <br />must be a valid E164 MSISDN; the parameter can be constructed using variables  <br />  <br />  <br />If set, call transfer will be limited by maxCallDuration seconds, must be a positive number, no upper bound.  <br />  <br />  <br /></td>\n</tr>\n<tr>\n<td>actionId</td>\n<td>integer</td>\n<td>User-defined ID of an action that can be used with go-to action.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Dial to Many</strong></p>\n<p>Dial to Many action performs a call redirection to multiple destinations, joining the user’s call only with the destination that answered the call first. After Dial to Many action the following actions are forbidden: Say, Collect, Dial, Dial to Many, Dial to WebRTC, Dial to SIP trunk, Dial to Conversations, Play, Record and Play from Recording.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>dialToMany  <br />  <br />[{  <br />  <br />number  <br />  <br />  <br />  <br />  <br />  <br />  <br />numbers  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />}]</td>\n<td>arry of objects  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />  <br />string</td>\n<td>Required.  <br />  <br />  <br />  <br />must be a valid E164 MSISDN; the parameter can be constructed using variables.  <br />  <br />must be a comma-separated list of valid E164 MSISDN numbers; the parameter can be constructed using variables</td>\n</tr>\n<tr>\n<td>options  <br />  <br />{  <br />  <br />parallel  <br />  <br />  <br />  <br />senderId  <br />  <br />  <br />  <br />maxCallDuration  <br />  <br />  <br />  <br />ringTimeout  <br />  <br />  <br />  <br />  <br /></td>\n<td>obect  <br />  <br />  <br />  <br />boolean  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />integer  <br />  <br />  <br />  <br />integer</td>\n<td><br />  <br />  <br />  <br />Flag indicating that parallel (true), or sequential (false) Dial to Many will be executed.  <br />  <br />Must be a valid E164 MSISDN; the parameter can be constructed using variables.  <br />  <br />If set, call transfer will be limited by maxCallDuration seconds; must be a positive number, no upper bound.  <br />  <br />If set limits the duration of the ringing of transferred calls in seconds. The default value is 30 seconds. This parameter can be changed only for sequential calls.</td>\n</tr>\n<tr>\n<td>actionId</td>\n<td>integer</td>\n<td>User-defined ID of an action that can be used with go-to action.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Dial to WebRTC</strong></p>\n<p>Dial to WebRTC action performs a call redirection to WebRTC application, joining the user’s call with the WebRTC application. After Dial to WebRTC action the following actions are forbidden: Say, Collect, Dial, Dial to Many, Dial to WebRTC, Dial to SIP trunk, Dial to Conversations, Play, Record and Play from Recording.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>dialToWebRTC</td>\n<td>string</td>\n<td>Required.  <br />  <br />Web and in-app calls applicationId. Read more about Web and in-app calls here</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Dial to SIP trunk</strong></p>\n<p>Dial to SIP trunk action performs a call to the specified SIP trunk. SIP trunk must be created on VHD platform before using this action. After Dial to SIP trunk action the following actions are forbidden: Say, Collect, Dial, Dial to Many, Dial to WebRTC, Dial to SIP trunk, Dial to Conversations, Play, Record and Play from Recording.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>dialToSipTrunk  <br /></td>\n<td>object</td>\n<td>Required.  <br />  <br />Only one of these two properties (ipAddress, domainName) can be set.</td>\n</tr>\n<tr>\n<td>options  <br />{  <br />  <br />from  <br />  <br />  <br />  <br />  <br />to  <br />  <br />  <br />  <br />  <br />headers  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />]</td>\n<td>object  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object</td>\n<td><br />  <br />  <br />String identifying who is calling. The parameter can be constructed using variables.  <br />  <br />  <br />String identifying who is called. The parameter can be constructed using variables.  <br />  <br />  <br />Additional headers to be sent to SIP trunk. If header key or value contains \\n or \\r, these characters will be removed. Header size is limited to 256 bytes, which includes header key and value together. X- prefix will be added internally to all headers. The parameter can be constructed using variables.</td>\n</tr>\n<tr>\n<td>actionId</td>\n<td>integer</td>\n<td>User-defined ID of an action that can be used with go-to action.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Dial to Conversations</strong></p>\n<p>Dial to Conversations action performs a call redirection to the VHD Conversations platform, joining the user’s call with an agent. After Dial to Conversations action the following actions are forbidden: Say, Collect, Dial, Dial to Many, Dial to WebRTC, Dial to SIP trunk, Dial to Conversations, Play, Record and Play from Recording.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>dialToConversations  <br />  <br />{  <br />  <br />  <br />  <br />options  <br />  <br />{  <br />  <br />  <br />tags  <br />  <br />  <br />  <br />}  <br />  <br />  <br />  <br />  <br />  <br />  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />array of strings</td>\n<td>Required.  <br />  <br />Only one of these two properties (ipAddress, domainName) can be set.  <br />  <br />Required  <br />Contains options to be associated to the dial to conversations action  <br />  <br />  <br />An array of conversation tag names that are assigned to this conversation for better categorization of the topics or customer intent. Value can be an array of tag names, empty array, or null value.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>For-Each</strong></p>\n<p>For-each action is a control statement that executes a block of code for each of the values within the supplied list. The Supplied list of values can be static or dynamic (defined as user variable).</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>for-each</td>\n<td>string</td>\n<td>Required.  <br />  <br />Variable name that will be used inside the loop to represent single value from supplied list of values.</td>\n</tr>\n<tr>\n<td>in</td>\n<td>string</td>\n<td>Required.  <br />  <br />Delimited string representing list of values; the parameter can be constructed using variables.</td>\n</tr>\n<tr>\n<td>delimiter</td>\n<td>string</td>\n<td>Delimiter used for separating values in supplied list of values; the parameter can be constructed using variables. Default is comma.</td>\n</tr>\n<tr>\n<td>do</td>\n<td>arry of objects</td>\n<td>Required.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Go-To</strong></p>\n<p>Go-To action is used to go back to some specified action that was already executed in the scenario and continue the execution from that point.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>goTo</td>\n<td>integer</td>\n<td>Required.  <br />  <br />The actionId of an action to which to jumpç</td>\n</tr>\n<tr>\n<td>options  <br />{  <br />  <br />gotoLimit  <br />  <br />  <br />  <br />countVariable  <br />  <br />}</td>\n<td>object  <br />  <br />  <br />integer  <br />  <br />  <br />  <br />string</td>\n<td><br />  <br />  <br />Maximum number of times goto can jump to specified action. Valid values are from 1 to 100.  <br />  <br />Name of the variable which counts passes through goto action.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Hang-up</strong></p>\n<p>Hangup action marks the end of the IVR flow execution, leading to the call actually being hung up.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><br />Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>Hang-up</strong></td>\n<td>string</td>\n<td>Value: \"hangup\"</td>\n</tr>\n</tbody>\n</table>\n</div><p>If-Then-Else</p>\n<p>If-Then-Else action provides simple branching based on a condition. If the condition evaluates to true, the then block is executed, otherwise the else block is executed. Only one of the blocks is required to be non-empty.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>If-Then-Else</td>\n<td>string</td>\n<td>Required.  <br />  <br />The expression to evaluate</td>\n</tr>\n<tr>\n<td>then</td>\n<td>array of objects</td>\n<td>The actions to execute if condition is evaluated to true</td>\n</tr>\n<tr>\n<td>else</td>\n<td>arry of objects</td>\n<td>The actions to execute if condition is evaluated to false</td>\n</tr>\n<tr>\n<td>actionId</td>\n<td>integer</td>\n<td>User-defined ID of an action that can be used with go-to action.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Machine Detection</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Machine Detection</td>\n<td>string</td>\n<td>Required.  <br />  <br />Value: \"machineDetection\"  <br />Machine Detection action detects answering machines at the beginning of the call. This action sets machineAnswered variable upon completion to true or false. Machine Detection introduces a delay of approximately 4s. This is the minimum time needed for machine detection. Machine Detection action has to be followed by a condition action that uses the value of machineAnswered for branching into the 'human answered' block and the 'answering machine answered' block. The 'answering machine' block can have a Say/Play/PlayFromRecording action or a Hangup action. If answering machine is detected, and a Say/Play/Play from Recording action is up next - the voice message will start playing into the voice mail only after the answering machine is finished with its greeting.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Pause</p>\n<p>Pause action pauses execution of the IVR scenario for the provided duration.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>pause</td>\n<td>number</td>\n<td>Required.  <br />  <br />the amount to wait in seconds, from 0 (exclusive) to 5 (inclusive)</td>\n</tr>\n<tr>\n<td>actionId</td>\n<td>integer</td>\n<td>User-defined ID of an action that can be used with go-to action.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Play</p>\n<p>Play action performs playback of audio provided by the client’s URL. Supported formats of the provided file are aac, aiff, m4a, mp2, mp3, mp4 (audio only), ogg, wav and wma. Our platform needs to have permission to make GET and HEAD HTTP requests on the provided URL. Standard http ports (like 80, 8080, etc.) are advised.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>playFromUrl</td>\n<td>string</td>\n<td>Required.  <br />Audio file URL.</td>\n</tr>\n<tr>\n<td>actionId</td>\n<td>integer</td>\n<td>User-defined ID of an action that can be used with go-to action.</td>\n</tr>\n</tbody>\n</table>\n</div><p>playFromRecording</p>\n<p>Play from Recording Action plays audio recorded from the current or some other call.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>playFromRecording</td>\n<td>string</td>\n<td>Required.  <br />Can be null (play last recorded audio from the current call), number (play the recording passed index) or text (play recording with identifier - current or previous call)</td>\n</tr>\n<tr>\n<td>actionId</td>\n<td>integer</td>\n<td>User-defined ID of an action that can be used with go-to action.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Record</p>\n<p>Record action records a portion of the call. The recording starts at the moment where the Record action is added in the IVR.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>record</td>\n<td>integer</td>\n<td>Required.  <br />The duration to record for in seconds; null for unlimited.</td>\n</tr>\n<tr>\n<td>options  <br />{  <br />escapeDigits  <br />  <br />  <br />beep  <br />  <br />  <br />maxSilence  <br />  <br />  <br />identifier  <br />  <br />}</td>\n<td>object  <br />  <br />string  <br />  <br />  <br />boolean  <br />  <br />  <br />integer  <br />  <br />  <br />string</td>\n<td><br />  <br />DTMF codes which should stop recording when input by the user.  <br />  <br />Flag indicating a beep sound should be played at the start of the recording.  <br />  <br />The amount of silence to wait for before stopping the recording.  <br />  <br />The identifier for the recording. Identified recordings can be reused in Play from Recording. The parameter can be constructed using variables.</td>\n</tr>\n<tr>\n<td>actionId</td>\n<td>integer</td>\n<td>User-defined ID of an action that can be used with go-to action.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Rpeat-Until</p>\n<p>This action is deprecated and should not be used, as it leads to incorrect behaviour and it will not be supported in the future. Please, use repeat-while loop instead.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>repeat</td>\n<td>array of objects</td>\n<td>Required.</td>\n</tr>\n<tr>\n<td>until</td>\n<td>string</td>\n<td>The expression to evaluate.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Repeat-While</p>\n<p>Repeat-While action is a control flow statement that repeatedly executes a block of code, as long as the boolean condition in the while field is true. Comparison is done using equal (==) or not equal (!=) operators. Make sure not to provide a condition that causes an infinite loop.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>repeat</td>\n<td>array of objects</td>\n<td>Required.</td>\n</tr>\n<tr>\n<td>while</td>\n<td>string</td>\n<td>The expression to evaluate.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Say</p>\n<p>Say action converts provided text into an audio file which is played during the call based on the provided parameters. Message text can be up to 1400 characters long.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>say</td>\n<td>string</td>\n<td>Required.  <br />Message text. Cannot contain only punctuation.</td>\n</tr>\n<tr>\n<td>options  <br />{  <br />  <br />language  <br />  <br />  <br />voice  <br />  <br />{  <br />  <br />name  <br />  <br />  <br />gender  <br />  <br />  <br />}  <br />  <br />speechRate  <br />  <br />}  <br /></td>\n<td>object  <br />  <br />  <br />string  <br />  <br />  <br />object  <br />  <br />  <br />  <br />string  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />number</td>\n<td>The expression to evaluate.  <br />  <br />  <br />Must be defined for correct pronunciation.  <br />  <br />Used to define the voice in which the text would be synthesized.  <br />  <br />  <br />Name of the voice in which the text would be synthesized.  <br />  <br />Gender in which the text would be synthesized.  <br />  <br />  <br />  <br />Must be within [0.5 - 2.0] range, default value is 1.</td>\n</tr>\n<tr>\n<td>actionId</td>\n<td>integer</td>\n<td>User-defined ID of an action that can be used with go-to action.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Send SMS</p>\n<p>Send SMS action creates and sends a text message from the scenario.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>sendSms  <br />{  <br />  <br />  <br />text  <br />  <br />  <br />  <br />from  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />to  <br />  <br />  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />string</td>\n<td>Required.  <br />Message text. Cannot contain only punctuation.  <br />  <br />Required.  <br />The text of the message that will be sent.  <br />  <br />Represents sender ID and it can be alphanumeric or numeric; alphanumeric sender ID length should be between 3 and 11 characters; numeric sender ID length should be between 3 and 14 characters; the parameter can be constructed using variables.  <br />  <br />Required.  <br />Must be a valid E164 MSISDN; the parameter can be constructed using variables  <br /></td>\n</tr>\n<tr>\n<td>actionId</td>\n<td>integer</td>\n<td>User-defined ID of an action that can be used with go-to action.</td>\n</tr>\n</tbody>\n</table>\n</div><p>]</p>\n<p>Set Variable</p>\n<p>Set variable action makes it possible to set a variable defined inside the IVR scenario to a specified value.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>setVariable</td>\n<td>string</td>\n<td>Required.  <br />Name of a variable.</td>\n</tr>\n<tr>\n<td>value</td>\n<td>string</td>\n<td>Value to which the variable should be set.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Switch-Case</p>\n<p>Switch-Case action takes a saved variable (obtained via either a Collect, Call API action or scenario parameters) and performs flow control based on it. It works similarly to the switch case block, using case-sensitive comparison.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>switch</td>\n<td>string</td>\n<td>Required.  <br />Name of the variable whose value to inspect.</td>\n</tr>\n<tr>\n<td>case  <br />{  <br />  <br />  <br />_default  <br />  <br />  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />array of objects</td>\n<td>Object whose keys are possible variable values, and values are arrays of actions.  <br />  <br />Array of actions to execute if none of the conditions above are met.</td>\n</tr>\n<tr>\n<td>actionId</td>\n<td>integer</td>\n<td>User-defined ID of an action that can be used with go-to action.</td>\n</tr>\n</tbody>\n</table>\n</div><p>While-Do</p>\n<p>While-Do action executes the do field block of code as long as a specified condition is true in the while field. As with Repeat-While, comparison is done using equal (==) or not equal (! =) operators. Make sure not to provide a condition that causes an infinite loop.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>while</td>\n<td>string</td>\n<td>Required.  <br />The expression to evaluate.</td>\n</tr>\n<tr>\n<td>do</td>\n<td>arry of objects</td>\n<td>Required.  <br /></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<p>Default sucessful response</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>createTime</td>\n<td>object</td>\n<td>Creation timestamp.</td>\n</tr>\n<tr>\n<td>description</td>\n<td>object</td>\n<td>Scenario description.</td>\n</tr>\n<tr>\n<td>id</td>\n<td>string</td>\n<td>Scenario key. It is used for launching IVR scenario.</td>\n</tr>\n<tr>\n<td>name</td>\n<td></td>\n<td>Scenario name.</td>\n</tr>\n<tr>\n<td>script</td>\n<td>object</td>\n<td>The list of scenario actions.</td>\n</tr>\n<tr>\n<td>updateTime</td>\n<td>string</td>\n<td>Update timestamp</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-response\">Error response</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>requestError</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>serviceException</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>Identifier of the error</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Detailed error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-request-fields\">Additional request fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>notifyUrl</em></td>\n<td>String</td>\n<td>The URL on your callback server on which the Delivery report will be sent.</td>\n</tr>\n<tr>\n<td><em>notifyContentType</em></td>\n<td>String</td>\n<td>Preferred Delivery report content type. Can be <code>application/json</code> or <code>application/xml</code>.</td>\n</tr>\n<tr>\n<td><em>script[].options.customRingback</em></td>\n<td>Object</td>\n<td>Custom ringback tones configuration. Allows specifying different audio files to play during ringing and when the call fails.</td>\n</tr>\n<tr>\n<td><em>script[].options.customRingback.ringingAudio</em></td>\n<td>Object</td>\n<td><strong>Required.</strong></td>\n</tr>\n<tr>\n<td><em>script[].options.customRingback.ringingAudio.type</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Type of audio content One of: <code>FILE</code>, <code>URL</code>.</td>\n</tr>\n<tr>\n<td><em>script[].options.customRingback.failedAudio</em></td>\n<td>Object</td>\n<td></td>\n</tr>\n<tr>\n<td><em>script[].dialToConversations.options.tagIdentifierType</em></td>\n<td>String</td>\n<td>Defines which identifier will be provided in the tags field. Possible values are ID and NAME. If not provided, default value of NAME is used. One of: <code>ID</code>, <code>NAME</code>.</td>\n</tr>\n<tr>\n<td><em>script[].options.goToLimit</em></td>\n<td>Int</td>\n<td>Maximum number of times goto can jump to specified action. Valid values are from 1 to 100.</td>\n</tr>\n<tr>\n<td><em>script[].answeringMachineDetection</em></td>\n<td>Boolean</td>\n<td><strong>Required.</strong> Indicates whether machine detection should be performed.</td>\n</tr>\n<tr>\n<td><em>script[].options.waitEndOfMessageDetection</em></td>\n<td>String</td>\n<td>Indicates whether end of the message detection is enabled for the call. <code>ALWAYS</code> specifies that after detection of <code>MACHINE</code> the script will always wait for the end of the message before executing actions defined in <code>onMachineDetected</code>. <code>NEVER</code> specifies that after detection of <code>MACHINE</code> actions defined in <code>onMachineDetected</code> will be executed immediately. <code>ON_DETECTING</code> specifies that end of the message will be respected as long as actions in <code>onDetecting</code> are in progress, once these actions finish the script jumps to <code>onMachineDetected</code> section immediately. One of: <code>ALWAYS</code>, <code>NEVER</code>, <code>ON_DETECTING</code>.</td>\n</tr>\n<tr>\n<td><em>script[].options.endOfMessageDetectionTimeout</em></td>\n<td>Int</td>\n<td>Specifies the timeout (in seconds) to wait for the end of the message after a machine is detected. If set, actions defined in <code>onMachineDetected</code> will be executed only after the end of the message is detected or the timeout is reached. If not set, <code>onMachineDetected</code> actions will be triggered immediately after machine detection. If the timeout is reached before the end of the message, actions defined in <code>onTimeout</code> will be executed instead.</td>\n</tr>\n<tr>\n<td><em>script[].onDetecting</em></td>\n<td>Array</td>\n<td>Array of actions to execute while detection is in progress. A maximum of two actions of specific types (<code>Play</code>, <code>Say</code>, <code>Collect</code>) can be defined.</td>\n</tr>\n<tr>\n<td><em>script[].onMachineDetected</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> Array of actions to execute when a machine is detected, or when the end of the message is reached if <code>endOfMessageDetectionTimeout</code> is set. Actions defined in <code>onDetecting</code> are interrupted before these actions begin. If you do not intend to continue the scenario after <code>onMachineDetected</code>, include a <code>Hangup</code> action at the end of this section to terminate the call.</td>\n</tr>\n<tr>\n<td><em>script[].onTimeout</em></td>\n<td>Array</td>\n<td>Array of actions to execute when a machine is detected and the <code>endOfMessageDetectionTimeout</code> is reached. If you do not intend to continue the scenario after <code>onTimeout</code>, include a <code>Hangup</code> action at the end of this section to terminate the call.</td>\n</tr>\n<tr>\n<td><em>script[].onHumanDetected</em></td>\n<td>Array</td>\n<td>Array of actions to execute when a human is detected. Actions defined in <code>onDetecting</code> are interrupted before these actions begin. To avoid this interruption, omit this section and define the remaining scenario after this action. If you do not intend to continue the scenario after <code>onHumanDetected</code>, include a <code>Hangup</code> action at the end of this section to terminate the call.</td>\n</tr>\n<tr>\n<td><em>script[].options.loopCount</em></td>\n<td>Int</td>\n<td>Number of times the file will be played.</td>\n</tr>\n<tr>\n<td><em>script[].playFromUpload</em></td>\n<td>String</td>\n<td><strong>Required.</strong> ID of uploaded file. The parameter can be constructed using variables.</td>\n</tr>\n<tr>\n<td><em>script[].playTty</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Text that will be played in Baudot tones. The parameter can be constructed using variables.</td>\n</tr>\n<tr>\n<td>_script[].case._<em>default</em></td>\n<td>Array</td>\n<td>Array of actions to execute if none of the conditions above are met.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-response-fields\">Additional response fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>notifyUrl</em></td>\n<td>String</td>\n<td>The URL on the client's callback server on which the Delivery report will be sent.</td>\n</tr>\n<tr>\n<td><em>notifyContentType</em></td>\n<td>String</td>\n<td>Preferred Delivery report content type. Can be <code>application/json</code> or <code>application/xml</code>.</td>\n</tr>\n<tr>\n<td><em>script[].options.customRingback</em></td>\n<td>Object</td>\n<td>Custom ringback tones configuration. Allows specifying different audio files to play during ringing and when the call fails.</td>\n</tr>\n<tr>\n<td><em>script[].options.customRingback.ringingAudio</em></td>\n<td>Object</td>\n<td><strong>Required.</strong></td>\n</tr>\n<tr>\n<td><em>script[].options.customRingback.ringingAudio.type</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Type of audio content One of: <code>FILE</code>, <code>URL</code>.</td>\n</tr>\n<tr>\n<td><em>script[].options.customRingback.failedAudio</em></td>\n<td>Object</td>\n<td></td>\n</tr>\n<tr>\n<td><em>script[].dialToConversations.options.tagIdentifierType</em></td>\n<td>String</td>\n<td>Defines which identifier will be provided in the tags field. Possible values are ID and NAME. If not provided, default value of NAME is used. One of: <code>ID</code>, <code>NAME</code>.</td>\n</tr>\n<tr>\n<td><em>script[].options.goToLimit</em></td>\n<td>Int</td>\n<td>Maximum number of times goto can jump to specified action. Valid values are from 1 to 100.</td>\n</tr>\n<tr>\n<td><em>script[].answeringMachineDetection</em></td>\n<td>Boolean</td>\n<td><strong>Required.</strong> Indicates whether machine detection should be performed.</td>\n</tr>\n<tr>\n<td><em>script[].options.waitEndOfMessageDetection</em></td>\n<td>String</td>\n<td>Indicates whether end of the message detection is enabled for the call. <code>ALWAYS</code> specifies that after detection of <code>MACHINE</code> the script will always wait for the end of the message before executing actions defined in <code>onMachineDetected</code>. <code>NEVER</code> specifies that after detection of <code>MACHINE</code> actions defined in <code>onMachineDetected</code> will be executed immediately. <code>ON_DETECTING</code> specifies that end of the message will be respected as long as actions in <code>onDetecting</code> are in progress, once these actions finish the script jumps to <code>onMachineDetected</code> section immediately. One of: <code>ALWAYS</code>, <code>NEVER</code>, <code>ON_DETECTING</code>.</td>\n</tr>\n<tr>\n<td><em>script[].options.endOfMessageDetectionTimeout</em></td>\n<td>Int</td>\n<td>Specifies the timeout (in seconds) to wait for the end of the message after a machine is detected. If set, actions defined in <code>onMachineDetected</code> will be executed only after the end of the message is detected or the timeout is reached. If not set, <code>onMachineDetected</code> actions will be triggered immediately after machine detection. If the timeout is reached before the end of the message, actions defined in <code>onTimeout</code> will be executed instead.</td>\n</tr>\n<tr>\n<td><em>script[].onDetecting</em></td>\n<td>Array</td>\n<td>Array of actions to execute while detection is in progress. A maximum of two actions of specific types (<code>Play</code>, <code>Say</code>, <code>Collect</code>) can be defined.</td>\n</tr>\n<tr>\n<td><em>script[].onMachineDetected</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> Array of actions to execute when a machine is detected, or when the end of the message is reached if <code>endOfMessageDetectionTimeout</code> is set. Actions defined in <code>onDetecting</code> are interrupted before these actions begin. If you do not intend to continue the scenario after <code>onMachineDetected</code>, include a <code>Hangup</code> action at the end of this section to terminate the call.</td>\n</tr>\n<tr>\n<td><em>script[].onTimeout</em></td>\n<td>Array</td>\n<td>Array of actions to execute when a machine is detected and the <code>endOfMessageDetectionTimeout</code> is reached. If you do not intend to continue the scenario after <code>onTimeout</code>, include a <code>Hangup</code> action at the end of this section to terminate the call.</td>\n</tr>\n<tr>\n<td><em>script[].onHumanDetected</em></td>\n<td>Array</td>\n<td>Array of actions to execute when a human is detected. Actions defined in <code>onDetecting</code> are interrupted before these actions begin. To avoid this interruption, omit this section and define the remaining scenario after this action. If you do not intend to continue the scenario after <code>onHumanDetected</code>, include a <code>Hangup</code> action at the end of this section to terminate the call.</td>\n</tr>\n<tr>\n<td><em>script[].options.loopCount</em></td>\n<td>Int</td>\n<td>Number of times the file will be played.</td>\n</tr>\n<tr>\n<td><em>script[].playFromUpload</em></td>\n<td>String</td>\n<td><strong>Required.</strong> ID of uploaded file. The parameter can be constructed using variables.</td>\n</tr>\n<tr>\n<td><em>script[].playTty</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Text that will be played in Baudot tones. The parameter can be constructed using variables.</td>\n</tr>\n<tr>\n<td>_script[].case._<em>default</em></td>\n<td>Array</td>\n<td>Array of actions to execute if none of the conditions above are met.</td>\n</tr>\n<tr>\n<td><em>lastUsageDate</em></td>\n<td>String</td>\n<td>Last usage date. <code>null</code> for scenarios that are used last time before <code>2024-01-01</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["voice","ivr","1","scenarios"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"484b8aad-ffca-4e41-81a6-d7dbb7f32147","name":"Call API","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"name\": \"Call API\",\n  \"description\": \"Perform a POST request to provided URL with headers and payload.\",\n  \"script\": [\n    {\n      \"request\": \"https://example.com/hooks/catch/\",\n      \"options\": {\n        \"method\": \"POST\",\n        \"headers\": {\n          \"content-type\": \"application/json\"\n        },\n        \"body\": {\n          \"payload\": \"$ finished the IVR.\"\n        }\n      }\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/voice/ivr/1/scenarios"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"396"},{"key":"Date","value":"Tue, 23 May 2023 18:55:48 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684868149029882162"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": \"30FF52E6766A1DB018CB24DAD9635AF9\",\n    \"name\": \"Call API\",\n    \"description\": \"Perform a POST request to provided URL with headers and payload.\",\n    \"createTime\": \"2023-05-23T18:55:49.063+0000\",\n    \"updateTime\": null,\n    \"script\": [\n        {\n            \"request\": \"https://example.com/hooks/catch/\",\n            \"options\": {\n                \"method\": \"POST\",\n                \"headers\": {\n                    \"content-type\": \"application/json\"\n                },\n                \"body\": {\n                    \"payload\": \"$ finished the IVR.\"\n                }\n            }\n        }\n    ]\n}"},{"id":"0aaa5459-3b67-4b7c-aadf-7ab216942971","name":"Call Api to send collected DTMFs","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"name\": \"Call Api\",\n  \"description\": \"Collect users input and submits it with a POST request to a url.\",\n  \"script\": [\n    {\n      \"say\": \"Hello, please press 1 if you wish to subscribe to our newsletter.\"\n    },\n    {\n      \"collectInto\": \"myCollectedVariable\",\n      \"options\": {\n        \"maxInputLength\": 1,\n        \"timeout\": 5\n      }\n    },\n    {\n      \"request\": \"https://www.myUrl.com/subscription\",\n      \"options\": {\n        \"method\": \"POST\",\n        \"headers\": {\n          \"custom-header\": \"header-value\"\n        },\n        \"body\": {\n          \"shouldSubscribe\": \"${myCollectedVariable}\"\n        }\n      }\n    },\n    {\n      \"if\": \"${myCollectedVariable == 1}\",\n      \"then\": [\n        {\n          \"say\": \"You subscribed successfully.\"\n        }\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/voice/ivr/1/scenarios"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"627"},{"key":"Date","value":"Tue, 23 May 2023 21:06:00 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684875960343539827"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": \"AE04E18E021AF533B4AF8CEA8F615E0E\",\n    \"name\": \"Call Api\",\n    \"description\": \"Collect users input and submits it with a POST request to a url.\",\n    \"createTime\": \"2023-05-23T21:06:00.363+0000\",\n    \"updateTime\": null,\n    \"script\": [\n        {\n            \"say\": \"Hello, please press 1 if you wish to subscribe to our newsletter.\"\n        },\n        {\n            \"collectInto\": \"myCollectedVariable\",\n            \"options\": {\n                \"maxInputLength\": 1,\n                \"timeout\": 5\n            }\n        },\n        {\n            \"request\": \"https://www.myUrl.com/subscription\",\n            \"options\": {\n                \"method\": \"POST\",\n                \"headers\": {\n                    \"custom-header\": \"header-value\"\n                },\n                \"body\": {\n                    \"shouldSubscribe\": \"${myCollectedVariable}\"\n                }\n            }\n        },\n        {\n            \"if\": \"${myCollectedVariable == 1}\",\n            \"then\": [\n                {\n                    \"say\": \"You subscribed successfully.\"\n                }\n            ]\n        }\n    ]\n}"},{"id":"e81eb016-618c-4e96-af86-11218620bebc","name":"Create API with response","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"name\": \"Call Api with collected response\",\n  \"description\": \"Collect users input and submit it with a POST request to a url, and play the response back to the user. Let's assume the response is a simple JSON object that has only one field with a key called 'responseText' and value defined by the clients API.\",\n  \"script\": [\n    {\n      \"say\": \"Hello, please press 1 if you wish to subscribe to our newsletter.\"\n    },\n    {\n      \"collectInto\": \"myCollectedVariable\",\n      \"options\": {\n        \"maxInputLength\": 1,\n        \"timeout\": 5\n      }\n    },\n    {\n      \"request\": \"https://www.myUrl.com/subscription\",\n      \"options\": {\n        \"method\": \"POST\",\n        \"headers\": {\n          \"custom-header\": \"header-value\"\n        },\n        \"body\": {\n          \"shouldSubscribe\": \"${myCollectedVariable}\"\n        },\n        \"collectResponse\": true\n      }\n    },\n    {\n      \"say\": \"${responseText}\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/voice/ivr/1/scenarios"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"799"},{"key":"Date","value":"Tue, 23 May 2023 21:18:39 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684876720088623837"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": \"A3E37F97BE572E2BA0994C358741D12D\",\n    \"name\": \"Call Api with collected response\",\n    \"description\": \"Collect users input and submit it with a POST request to a url, and play the response back to the user. Let's assume the response is a simple JSON object that has only one field with a key called 'responseText' and value defined by the clients API.\",\n    \"createTime\": \"2023-05-23T21:18:40.153+0000\",\n    \"updateTime\": null,\n    \"script\": [\n        {\n            \"say\": \"Hello, please press 1 if you wish to subscribe to our newsletter.\"\n        },\n        {\n            \"collectInto\": \"myCollectedVariable\",\n            \"options\": {\n                \"maxInputLength\": 1,\n                \"timeout\": 5\n            }\n        },\n        {\n            \"request\": \"https://www.myUrl.com/subscription\",\n            \"options\": {\n                \"method\": \"POST\",\n                \"headers\": {\n                    \"custom-header\": \"header-value\"\n                },\n                \"body\": {\n                    \"shouldSubscribe\": \"${myCollectedVariable}\"\n                },\n                \"collectResponse\": true\n            }\n        },\n        {\n            \"say\": \"${responseText}\"\n        }\n    ]\n}"},{"id":"cf3b941a-b02b-4b68-ac3c-9314423833e3","name":"Capture speech or digit","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"name\": \"Capture speech or digit\",\n  \"description\": \"Capture speech or digit\",\n  \"script\": [\n    {\n      \"say\": \"Say discount or press 1 to get discount. Say exit or press 0 to exit.\"\n    },\n    {\n      \"capture\": \"myVar\",\n      \"timeout\": 5,\n      \"speechOptions\": {\n        \"language\": \"en-US\",\n        \"maxSilence\": 2,\n        \"keyPhrases\": [\n          \"discount\",\n          \"exit\"\n        ]\n      },\n      \"dtmfOptions\": {\n        \"maxInputLength\": 1\n      }\n    },\n    {\n      \"if\": \"${myVar == 'discount' || myVar == '1'}\",\n      \"then\": [\n        {\n          \"say\": \"You will get discount\"\n        }\n      ],\n      \"else\": [\n        {\n          \"if\": \"${myVar == 'exit' || myVar == '0'}\",\n          \"then\": [\n            {\n              \"say\": \"Goodbye\"\n            }\n          ],\n          \"else\": [\n            {\n              \"say\": \"I did not understand\"\n            }\n          ]\n        }\n      ]\n    },\n    \"hangup\"\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/voice/ivr/1/scenarios"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"115"},{"key":"Date","value":"Tue, 23 May 2023 21:29:20 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684877360658761225"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"requestError\": {\n        \"serviceException\": {\n            \"messageId\": \"1684877360683748645\",\n            \"text\": \"Route not set for: CaptureAction\"\n        }\n    }\n}"},{"id":"707e9230-48d0-4cc0-b5b3-f81139e07b2d","name":"Collect dtmf and branch call execution based on input","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"name\": \"Collect dtmf and branch call execution based on input\",\n  \"description\": \"Based on the collected dtmf input, the execution is branched.\",\n  \"script\": [\n    {\n      \"say\": \"Hello. Press 1 or 2.\"\n    },\n    {\n      \"collectInto\": \"myVariable\",\n      \"options\": {\n        \"maxInputLength\": 1,\n        \"timeout\": 5,\n        \"sendToReports\": \"ALWAYS\",\n        \"mappedValues\": {\n          \"1\": \"pressed one\",\n          \"2\": \"pressed two\"\n        }\n      }\n    },\n    {\n      \"case\": {\n        \"1\": [\n          {\n            \"say\": \"You have pressed 1,\"\n          }\n        ],\n        \"2\": [\n          {\n            \"say\": \"You have pressed 2.\"\n          }\n        ]\n      },\n      \"switch\": \"myVariable\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/voice/ivr/1/scenarios"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"541"},{"key":"Date","value":"Tue, 23 May 2023 21:30:33 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684877434199252663"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": \"E44CB14DD947C09A89C34A6614F82958\",\n    \"name\": \"Collect dtmf and branch call execution based on input\",\n    \"description\": \"Based on the collected dtmf input, the execution is branched.\",\n    \"createTime\": \"2023-05-23T21:30:34.220+0000\",\n    \"updateTime\": null,\n    \"script\": [\n        {\n            \"say\": \"Hello. Press 1 or 2.\"\n        },\n        {\n            \"collectInto\": \"myVariable\",\n            \"options\": {\n                \"maxInputLength\": 1,\n                \"timeout\": 5,\n                \"sendToReports\": \"ALWAYS\",\n                \"mappedValues\": {\n                    \"1\": \"pressed one\",\n                    \"2\": \"pressed two\"\n                }\n            }\n        },\n        {\n            \"case\": {\n                \"1\": [\n                    {\n                        \"say\": \"You have pressed 1,\"\n                    }\n                ],\n                \"2\": [\n                    {\n                        \"say\": \"You have pressed 2.\"\n                    }\n                ]\n            },\n            \"switch\": \"myVariable\"\n        }\n    ]\n}"},{"id":"d84df2d6-608d-489f-b5cb-aaebf74fc396","name":"Capture","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"name\": \"Capture speech\",\n  \"description\": \"Capture users speech and branch the call based on the spoken words.\",\n  \"script\": [\n    {\n      \"say\": \"Say yes or no\"\n    },\n    {\n      \"capture\": \"myVar\",\n      \"timeout\": 3,\n      \"speechOptions\": {\n        \"language\": \"en-US\",\n        \"keyPhrases\": [\n          \"yes\",\n          \"no\"\n        ]\n      }\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/voice/ivr/1/scenarios"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"115"},{"key":"Date","value":"Tue, 23 May 2023 21:33:48 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684877628571046666"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"requestError\": {\n        \"serviceException\": {\n            \"messageId\": \"1684877628589707644\",\n            \"text\": \"Route not set for: CaptureAction\"\n        }\n    }\n}"},{"id":"73e86f70-6543-4eb9-973c-1c11dd713db5","name":"Capture short","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"name\": \"Capture speech\",\n  \"description\": \"Capture users speech and branch the call based on the spoken words.\",\n  \"script\": [\n   {\n  \"say\": \"If you want more info, say: info. If you want to reach our agent, say: agent\"\n},\n{\n  \"capture\": \"myVar\",\n  \"timeout\": 5,\n  \"speechOptions\": {\n      \"language\": \"en-US\",\n      \"maxSilence\": 3,\n      \"keyPhrases\": [\"info\", \"agent\"]\n  }\n},\n{\n  \"if\": \"${myVar == 'info'}\",\n  \"then\": [\n    {\n      \"say\": \"Ok. I will send you more details\"\n    }\n  ],\n  \"else\": []\n}\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/voice/ivr/1/scenarios"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"115"},{"key":"Date","value":"Tue, 23 May 2023 21:42:24 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684878145005532225"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"requestError\": {\n        \"serviceException\": {\n            \"messageId\": \"1684878145035674642\",\n            \"text\": \"Route not set for: CaptureAction\"\n        }\n    }\n}"}],"_postman_id":"14dbb5aa-c1e5-4c06-bb32-5f9b0a133a73"},{"name":"Search Voice IVR Scenarios","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an array\", function () {","    pm.expect(responseBody).to.be.an('array');","});"],"type":"text/javascript","packages":{}}}],"id":"bb69c545-201d-49ed-8b97-efcc8428ec17","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[],"url":"https://go2.vhdmedia.se/voice/ivr/1/scenarios","description":"<p>Search your Voice IVR scenarios. Use the query parameters to filter them. To get one scenario by its ID, use <strong>Get IVR scenario</strong>.</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<p>All parameters are optional.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>page</em></td>\n<td>Int</td>\n<td>Page number you want to see. Default is 1.</td>\n</tr>\n<tr>\n<td><em>pageSize</em></td>\n<td>Int</td>\n<td>Size of the page you want to see. Default is 50.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>The name to search by.</td>\n</tr>\n<tr>\n<td><em>label</em></td>\n<td>String</td>\n<td>The label of scenario to search by.</td>\n</tr>\n<tr>\n<td><em>lastUsageDateSince</em></td>\n<td>String</td>\n<td>Lower limit of last usage date in <code>yyyy-MM-dd</code> format. Note: For scenarios where <code>lastUsageDate</code> is <code>null</code>, filtering matches <code>createTime</code>.</td>\n</tr>\n<tr>\n<td><em>lastUsageDateUntil</em></td>\n<td>String</td>\n<td>Upper limit of last usage date in <code>yyyy-MM-dd</code> format. Note: For scenarios where <code>lastUsageDate</code> is <code>null</code>, filtering matches <code>createTime</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n<h3 id=\"additional-response-fields\">Additional response fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>[].description</em></td>\n<td>String</td>\n<td>Scenario description.</td>\n</tr>\n<tr>\n<td><em>[].notifyUrl</em></td>\n<td>String</td>\n<td>The URL on the client's callback server on which the Delivery report will be sent.</td>\n</tr>\n<tr>\n<td><em>[].notifyContentType</em></td>\n<td>String</td>\n<td>Preferred Delivery report content type. Can be <code>application/json</code> or <code>application/xml</code>.</td>\n</tr>\n<tr>\n<td><em>[].record</em></td>\n<td>Boolean</td>\n<td>Indicates if all calls using the scenario should be recorded.</td>\n</tr>\n<tr>\n<td><em>[].script[].options</em></td>\n<td>Object</td>\n<td><strong>Required.</strong></td>\n</tr>\n<tr>\n<td><em>[].script[].options.method</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Http method One of: <code>GET</code>, <code>POST</code>, <code>PUT</code>, <code>DELETE</code>, <code>PATCH</code>.</td>\n</tr>\n<tr>\n<td><em>[].script[].options.headers</em></td>\n<td>Object</td>\n<td>HTTP headers</td>\n</tr>\n<tr>\n<td><em>[].script[].options.body</em></td>\n<td>String</td>\n<td><strong>Required.</strong> HTTP body. The parameter can be constructed using variables.</td>\n</tr>\n<tr>\n<td><em>[].script[].options.collectResponse</em></td>\n<td>Boolean</td>\n<td>If this field is set, the system will parse the response and save all its fields as variables inside scenario. For example, if the response is <code>{\"letters\": \"abcd\", \"numbers\": 12345}</code>, the system will store variables letters and numbers, with values <code>abcd</code> and <code>12345</code> respectively. Nested JSON and XML objects are also supported; nested fields are resolved with underscore notation. For example, if the response is <code>{\"a\": {\"b\": {\"c\": \"xyz\"}}}</code>, the system will store <code>a_b_c</code> with value <code>xyz</code>. The response cannot contain duplicate keys or predefined words. Check the example Call Api with response. Response that is parsed can only be in JSON or XML. Predefined words: from, to, startTime, answerTime and machineAnswered.</td>\n</tr>\n<tr>\n<td><em>[].script[].actionId</em></td>\n<td>Int</td>\n<td>User-defined ID of an action that can be used with go-to action.</td>\n</tr>\n<tr>\n<td><em>[].script[].capture</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Variable name. If speech recognition matches one of the specified keyPhrases, a variable with this name will be set to match the keyphrase. Otherwise, this variable will be an empty string. Together with this variable, an implicit variable that contains the full text of the captured speech will be created. The name of this variable is constructed by adding _Full suffix to the variable name.</td>\n</tr>\n<tr>\n<td><em>[].script[].timeout</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Number of seconds used for capturing speech or digits failover. Minimum value is 1 and maximum value is 30. Can be overriden with speechOptions.maxSilence.</td>\n</tr>\n<tr>\n<td><em>[].script[].beep</em></td>\n<td>Boolean</td>\n<td>Flag indicating whether a beep sound should play at the start of capture.</td>\n</tr>\n<tr>\n<td><em>[].script[].speechOptions</em></td>\n<td>Object</td>\n<td><strong>Required.</strong></td>\n</tr>\n<tr>\n<td><em>[].script[].speechOptions.language</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Language used in speech that needs to be captured. For full list of supported languages see Supported languages.</td>\n</tr>\n<tr>\n<td><em>[].script[].speechOptions.keyPhrases</em></td>\n<td>Array</td>\n<td>Array of keyphrases used for matching capturing speech. If full captured text contains one of the specified phrases, that phrase will be set in variable specified in capture parameter. If keyphrases are not set or no matching is done, variable will be set to empty string. Every keyphrase can contain up to 5 words and number of keyphrases is not limited.</td>\n</tr>\n<tr>\n<td><em>[].script[].speechOptions.maxSilence</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> If used, this parameter defines the number of seconds of silence that will stop capturing. For example value of 3 defines that capturing stops as soon as 3 seconds of silence is detected or when timeout expires, whichever happens first. Minimum value is 1 and maximum value is 5. The value must be lower than the timeout value.</td>\n</tr>\n<tr>\n<td><em>[].script[].dtmfOptions</em></td>\n<td>Object</td>\n<td></td>\n</tr>\n<tr>\n<td><em>[].script[].dtmfOptions.maxInputLength</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Maximum acceptable number of digits. Capturing is stopped after this number of digits has been entered. If not set, maximum value will be used.</td>\n</tr>\n<tr>\n<td><em>[].script[].dtmfOptions.mappedValues</em></td>\n<td>Object</td>\n<td>Map of expected collected DTMF values with some real meaning. (Example: if you have multilingual IVR, and option for users to press 1 to enter \"English\" menu, you can define {\"1\":\"English\"}, so the reporting and analysis will be easier). When this option is defined additional variable is present in the scenario. If you set your capture action variable name to myVar, then you will get additional variable myVar_Meaning containing the mapped value for a collected DTMF. Keys can contain only digits and asterisks.</td>\n</tr>\n<tr>\n<td><em>[].script[].sendToReports</em></td>\n<td>String</td>\n<td>Choose if you want to show DTMF inputs in Voice reports and logs. Options are: ALWAYS (always send - default value), MASKED (send masked - xxxx will be shown in reports and logs), NEVER (don't send - DTMF inputs will not be shown in reports and logs). One of: <code>ALWAYS</code>, <code>MASKED</code>, <code>NEVER</code>.</td>\n</tr>\n<tr>\n<td><em>[].script[].collectInto</em></td>\n<td>String</td>\n<td><strong>Required.</strong> The name of the variable to set.</td>\n</tr>\n<tr>\n<td><em>[].script[].dial</em></td>\n<td>String</td>\n<td><strong>Required.</strong> must be a valid E164 MSISDN; the parameter can be constructed using variables</td>\n</tr>\n<tr>\n<td><em>[].script[].options.senderId</em></td>\n<td>String</td>\n<td>must be a valid E164 MSISDN; the parameter can be constructed using variables</td>\n</tr>\n<tr>\n<td><em>[].script[].options.maxCallDuration</em></td>\n<td>Int</td>\n<td>If set, call transfer will be limited by maxCallDuration seconds, must be a positive number, no upper bound.</td>\n</tr>\n<tr>\n<td><em>[].script[].options.customRingback</em></td>\n<td>Object</td>\n<td>Custom ringback tones configuration. Allows specifying different audio files to play during ringing and when the call fails.</td>\n</tr>\n<tr>\n<td><em>[].script[].options.customRingback.ringingAudio</em></td>\n<td>Object</td>\n<td><strong>Required.</strong></td>\n</tr>\n<tr>\n<td><em>[].script[].options.customRingback.ringingAudio.type</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Type of audio content One of: <code>FILE</code>, <code>URL</code>.</td>\n</tr>\n<tr>\n<td><em>[].script[].options.customRingback.failedAudio</em></td>\n<td>Object</td>\n<td></td>\n</tr>\n<tr>\n<td><em>[].script[].dialToMany</em></td>\n<td>Array</td>\n<td><strong>Required.</strong></td>\n</tr>\n<tr>\n<td><em>[].script[].options.parallel</em></td>\n<td>Boolean</td>\n<td>Flag indicating that parallel (<code>true</code>), or sequential (<code>false</code>) Dial to Many will be executed.</td>\n</tr>\n<tr>\n<td><em>[].script[].dialToConversations</em></td>\n<td>Object</td>\n<td><strong>Required.</strong></td>\n</tr>\n<tr>\n<td><em>[].script[].dialToConversations.options.tagIdentifierType</em></td>\n<td>String</td>\n<td>Defines which identifier will be provided in the tags field. Possible values are ID and NAME. If not provided, default value of NAME is used. One of: <code>ID</code>, <code>NAME</code>.</td>\n</tr>\n<tr>\n<td><em>[].script[].dialToConversations.options.tags</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> An array of conversation tag names or ids that are assigned to this conversation for better categorization of the topics or customer intent. Value can be an array of tag names/ids, empty array, or null value.</td>\n</tr>\n<tr>\n<td><em>[].script[].for-each</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Variable name that will be used inside the loop to represent single value from supplied list of values.</td>\n</tr>\n<tr>\n<td><em>[].script[].delimiter</em></td>\n<td>String</td>\n<td>Delimiter for separating values in the list of values.</td>\n</tr>\n<tr>\n<td><em>[].script[].do</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> Array of actions to execute.</td>\n</tr>\n<tr>\n<td><em>[].script[].goTo</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> The actionId of an action to which to jump</td>\n</tr>\n<tr>\n<td><em>[].script[].options.goToLimit</em></td>\n<td>Int</td>\n<td>Maximum number of times goto can jump to specified action. Valid values are from 1 to 100.</td>\n</tr>\n<tr>\n<td><em>[].script[].options.countVariable</em></td>\n<td>String</td>\n<td>Name of the variable which counts passes through goto action</td>\n</tr>\n<tr>\n<td><em>[].script[].if</em></td>\n<td>String</td>\n<td><strong>Required.</strong> The expression to evaluate</td>\n</tr>\n<tr>\n<td><em>[].script[].then</em></td>\n<td>Array</td>\n<td>The actions to execute if condition is evaluated to true.</td>\n</tr>\n<tr>\n<td><em>[].script[].else</em></td>\n<td>Array</td>\n<td>The actions to execute if condition is evaluated to false.</td>\n</tr>\n<tr>\n<td><em>[].script[].answeringMachineDetection</em></td>\n<td>Boolean</td>\n<td><strong>Required.</strong> Indicates whether machine detection should be performed.</td>\n</tr>\n<tr>\n<td><em>[].script[].options.waitEndOfMessageDetection</em></td>\n<td>String</td>\n<td>Indicates whether end of the message detection is enabled for the call. <code>ALWAYS</code> specifies that after detection of <code>MACHINE</code> the script will always wait for the end of the message before executing actions defined in <code>onMachineDetected</code>. <code>NEVER</code> specifies that after detection of <code>MACHINE</code> actions defined in <code>onMachineDetected</code> will be executed immediately. <code>ON_DETECTING</code> specifies that end of the message will be respected as long as actions in <code>onDetecting</code> are in progress, once these actions finish the script jumps to <code>onMachineDetected</code> section immediately. One of: <code>ALWAYS</code>, <code>NEVER</code>, <code>ON_DETECTING</code>.</td>\n</tr>\n<tr>\n<td><em>[].script[].options.endOfMessageDetectionTimeout</em></td>\n<td>Int</td>\n<td>Specifies the timeout (in seconds) to wait for the end of the message after a machine is detected. If set, actions defined in <code>onMachineDetected</code> will be executed only after the end of the message is detected or the timeout is reached. If not set, <code>onMachineDetected</code> actions will be triggered immediately after machine detection. If the timeout is reached before the end of the message, actions defined in <code>onTimeout</code> will be executed instead.</td>\n</tr>\n<tr>\n<td><em>[].script[].onDetecting</em></td>\n<td>Array</td>\n<td>Array of actions to execute while detection is in progress. A maximum of two actions of specific types (<code>Play</code>, <code>Say</code>, <code>Collect</code>) can be defined.</td>\n</tr>\n<tr>\n<td><em>[].script[].onMachineDetected</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> Array of actions to execute when a machine is detected, or when the end of the message is reached if <code>endOfMessageDetectionTimeout</code> is set. Actions defined in <code>onDetecting</code> are interrupted before these actions begin. If you do not intend to continue the scenario after <code>onMachineDetected</code>, include a <code>Hangup</code> action at the end of this section to terminate the call.</td>\n</tr>\n<tr>\n<td><em>[].script[].onTimeout</em></td>\n<td>Array</td>\n<td>Array of actions to execute when a machine is detected and the <code>endOfMessageDetectionTimeout</code> is reached. If you do not intend to continue the scenario after <code>onTimeout</code>, include a <code>Hangup</code> action at the end of this section to terminate the call.</td>\n</tr>\n<tr>\n<td><em>[].script[].onHumanDetected</em></td>\n<td>Array</td>\n<td>Array of actions to execute when a human is detected. Actions defined in <code>onDetecting</code> are interrupted before these actions begin. To avoid this interruption, omit this section and define the remaining scenario after this action. If you do not intend to continue the scenario after <code>onHumanDetected</code>, include a <code>Hangup</code> action at the end of this section to terminate the call.</td>\n</tr>\n<tr>\n<td><em>[].script[].pause</em></td>\n<td>Number</td>\n<td><strong>Required.</strong> the amount to wait in seconds, from 0 (exclusive) to 5 (inclusive)</td>\n</tr>\n<tr>\n<td><em>[].script[].playFromUrl</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Audio file URL. The parameter can be constructed using variables.</td>\n</tr>\n<tr>\n<td><em>[].script[].options.loopCount</em></td>\n<td>Int</td>\n<td>Number of times the file will be played.</td>\n</tr>\n<tr>\n<td><em>[].script[].playFromRecording</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Identifier of the recorded file. The parameter can be constructed using variables.</td>\n</tr>\n<tr>\n<td><em>[].script[].playFromUpload</em></td>\n<td>String</td>\n<td><strong>Required.</strong> ID of uploaded file. The parameter can be constructed using variables.</td>\n</tr>\n<tr>\n<td><em>[].script[].playTty</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Text that will be played in Baudot tones. The parameter can be constructed using variables.</td>\n</tr>\n<tr>\n<td><em>[].script[].options.escapeDigits</em></td>\n<td>String</td>\n<td>DTMF codes which should stop recording when input by the user.</td>\n</tr>\n<tr>\n<td><em>[].script[].options.identifier</em></td>\n<td>String</td>\n<td>The identifier for the recording. Identified recordings can be reused in Play from Recording. The parameter can be constructed using variables.</td>\n</tr>\n<tr>\n<td><em>[].script[].repeat</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> Array of actions to execute.</td>\n</tr>\n<tr>\n<td><em>[].script[].while</em></td>\n<td>String</td>\n<td><strong>Required.</strong> The expression to evaluate.</td>\n</tr>\n<tr>\n<td><em>[].script[].say</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Message text. SSML (<em>Speech Synthesis Markup Language</em>) is supported and can be used to fully customize pronunciation of the provided text. The parameter can be constructed using variables.</td>\n</tr>\n<tr>\n<td><em>[].script[].options.voice</em></td>\n<td>Object</td>\n<td></td>\n</tr>\n<tr>\n<td><em>[].script[].options.voice.gender</em></td>\n<td>String</td>\n<td>Gender in which the text would be synthesized. The parameter can be constructed using variables.</td>\n</tr>\n<tr>\n<td><em>[].script[].options.speechRate</em></td>\n<td>Number</td>\n<td>Must be within [0.5 - 2.0] range, default value is 1.</td>\n</tr>\n<tr>\n<td><em>[].script[].sendSms</em></td>\n<td>Object</td>\n<td><strong>Required.</strong></td>\n</tr>\n<tr>\n<td><em>[].script[].sendSms.text</em></td>\n<td>String</td>\n<td><strong>Required.</strong> The text of the message that will be sent.</td>\n</tr>\n<tr>\n<td><em>[].script[].sendSms.from</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Represents sender ID and it can be alphanumeric or numeric; alphanumeric sender ID length should be between 3 and 11 characters; numeric sender ID length should be between 3 and 14 characters; the parameter can be constructed using variables</td>\n</tr>\n<tr>\n<td><em>[].script[].setVariable</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Name of a variable.</td>\n</tr>\n<tr>\n<td><em>[].script[].value</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Value to which the variable should be set. The parameter can be constructed using variables.</td>\n</tr>\n<tr>\n<td><em>[].script[].switch</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Name of the variable whose value to inspect.</td>\n</tr>\n<tr>\n<td><em>[].script[].case</em></td>\n<td>Object</td>\n<td><strong>Required.</strong></td>\n</tr>\n<tr>\n<td>_[].script[].case._<em>default</em></td>\n<td>Array</td>\n<td>Array of actions to execute if none of the conditions above are met.</td>\n</tr>\n<tr>\n<td><em>[].updateTime</em></td>\n<td>String</td>\n<td>Update timestamp</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["voice","ivr","1","scenarios"],"host":["go2","vhdmedia","se"],"query":[{"disabled":true,"description":{"content":"<p>Page number you want to see. Default is 1.</p>\n","type":"text/plain"},"key":"page","value":""},{"disabled":true,"description":{"content":"<p>Size of the page you want to see. Default is 50.</p>\n","type":"text/plain"},"key":"pageSize","value":""},{"disabled":true,"description":{"content":"<p>The name to search by.</p>\n","type":"text/plain"},"key":"name","value":""},{"disabled":true,"description":{"content":"<p>The label of scenario to search by.</p>\n","type":"text/plain"},"key":"label","value":""},{"disabled":true,"description":{"content":"<p>Lower limit of last usage date in <code>yyyy-MM-dd</code> format. Note: For scenarios where <code>lastUsageDate</code> is <code>null</code>, filtering matches <code>createTime</code>.</p>\n","type":"text/plain"},"key":"lastUsageDateSince","value":""},{"disabled":true,"description":{"content":"<p>Upper limit of last usage date in <code>yyyy-MM-dd</code> format. Note: For scenarios where <code>lastUsageDate</code> is <code>null</code>, filtering matches <code>createTime</code>.</p>\n","type":"text/plain"},"key":"lastUsageDateUntil","value":""}],"variable":[]}},"response":[{"id":"4163c0ed-2852-4110-84a1-f4b96b129b12","name":"Search Voice IVR Scenarios","originalRequest":{"method":"GET","header":[],"url":"https://go2.vhdmedia.se/voice/ivr/1/scenarios/{{id}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"2400"},{"key":"Date","value":"Tue, 23 May 2023 15:41:17 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684856477618441228"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"id\": \"5484CAA003789D634478D4456B717B78\",\n        \"name\": \"Call API\",\n        \"description\": \"Perform a POST request to provided URL with headers and payload.\",\n        \"createTime\": \"2023-05-23T15:39:40.490+0000\",\n        \"updateTime\": null,\n        \"script\": [\n            {\n                \"request\": \"https://www.example.com/webhook\",\n                \"options\": {\n                    \"method\": \"POST\",\n                    \"headers\": {\n                        \"content-type\": \"application/json\"\n                    },\n                    \"body\": {\n                        \"payload\": \"$ finished the IVR.\"\n                    }\n                }\n            }\n        ]\n    },\n    {\n        \"id\": \"BE658F4FF7F221CD6AC4D79180A86001\",\n        \"name\": \"Call Api\",\n        \"description\": \"Collect users input and submits it with a POST request to a url.\",\n        \"createTime\": \"2023-04-25T08:31:00.680+0000\",\n        \"updateTime\": null,\n        \"script\": [\n            {\n                \"say\": \"Hello, please press 1 if you wish to subscribe to our newsletter.\"\n            },\n            {\n                \"collectInto\": \"myCollectedVariable\",\n                \"options\": {\n                    \"maxInputLength\": 1,\n                    \"timeout\": 5\n                }\n            },\n            {\n                \"request\": \"https://www.myUrl.com/subscription\",\n                \"options\": {\n                    \"method\": \"POST\",\n                    \"headers\": {\n                        \"custom-header\": \"header-value\"\n                    },\n                    \"body\": {\n                        \"shouldSubscribe\": \"${myCollectedVariable}\"\n                    }\n                }\n            },\n            {\n                \"if\": \"${myCollectedVariable == 1}\",\n                \"then\": [\n                    {\n                        \"say\": \"You subscribed successfully.\"\n                    }\n                ]\n            }\n        ]\n    },\n    {\n        \"id\": \"9FF925EACAEB88E5BC113A4E48085065\",\n        \"name\": \"Call Api\",\n        \"description\": \"Collect users input and submits it with a POST request to a url.\",\n        \"createTime\": \"2023-04-25T08:28:22.540+0000\",\n        \"updateTime\": null,\n        \"script\": [\n            {\n                \"say\": \"Hello, please press 1 if you wish to subscribe to our newsletter.\"\n            },\n            {\n                \"collectInto\": \"myCollectedVariable\",\n                \"options\": {\n                    \"maxInputLength\": 1,\n                    \"timeout\": 5\n                }\n            },\n            {\n                \"request\": \"https://www.myUrl.com/subscription\",\n                \"options\": {\n                    \"method\": \"POST\",\n                    \"headers\": {\n                        \"custom-header\": \"header-value\"\n                    },\n                    \"body\": {\n                        \"shouldSubscribe\": \"${myCollectedVariable}\"\n                    }\n                }\n            },\n            {\n                \"if\": \"${myCollectedVariable == 1}\",\n                \"then\": [\n                    {\n                        \"say\": \"You subscribed successfully.\"\n                    }\n                ]\n            }\n        ]\n    },\n    {\n        \"id\": \"9350D08A12EE1DC76A626E06FA24CDFF\",\n        \"name\": \"Call API\",\n        \"description\": \"Perform a POST request to provided URL with headers and payload.\",\n        \"createTime\": \"2023-04-25T08:23:30.033+0000\",\n        \"updateTime\": null,\n        \"script\": [\n            {\n                \"request\": \"https://requestb.in/12345\",\n                \"options\": {\n                    \"method\": \"POST\",\n                    \"headers\": {\n                        \"content-type\": \"application/json\"\n                    },\n                    \"body\": {\n                        \"payload\": \"${to} finished the IVR.\"\n                    }\n                }\n            }\n        ]\n    },\n    {\n        \"id\": \"11389EE29DF6EB63CFE3172065D86543\",\n        \"name\": \"Call API\",\n        \"description\": \"Perform a POST request to provided URL with headers and payload.\",\n        \"createTime\": \"2023-04-21T09:01:07.717+0000\",\n        \"updateTime\": null,\n        \"script\": [\n            {\n                \"request\": \"https://requestb.in/12345\",\n                \"options\": {\n                    \"method\": \"POST\",\n                    \"headers\": {\n                        \"content-type\": \"application/json\"\n                    },\n                    \"body\": {\n                        \"payload\": \"${to} finished the IVR.\"\n                    }\n                }\n            }\n        ]\n    }\n]"}],"_postman_id":"bb69c545-201d-49ed-8b97-efcc8428ec17"},{"name":"Get IVR scenario","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"id\", \"name\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","",""],"type":"text/javascript","packages":{}}}],"id":"5e0dcc9d-f719-4eb8-8123-0acbec29d25f","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[],"url":"https://go2.vhdmedia.se/voice/ivr/1/scenarios/{{id}}","description":"<p>Use this method to get the scenario using scenarioId in the API endpoint.</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>id</td>\n<td>string [ 0 .. 255 ] characters</td>\n<td>Required.  <br />  <br />Scenario identifier.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"responses\">Responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>createTime</td>\n<td>string [ 0 .. 255 ] characters</td>\n<td>Creation timestamp.</td>\n</tr>\n<tr>\n<td>description</td>\n<td>string [ 0 .. 50 ] characters</td>\n<td>Scenario description.</td>\n</tr>\n<tr>\n<td>id</td>\n<td>string</td>\n<td>Scenario key. It is used for launching IVR scenario.</td>\n</tr>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>Scenario name.</td>\n</tr>\n<tr>\n<td>script</td>\n<td>object</td>\n<td>The list of scenario actions.</td>\n</tr>\n<tr>\n<td>updateTime</td>\n<td>string</td>\n<td>Update timestamp</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-responses\">Error responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>requestError</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>serviceException</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>Identifier of the error</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Detailed error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-response-fields\">Additional response fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>notifyUrl</em></td>\n<td>String</td>\n<td>The URL on the client's callback server on which the Delivery report will be sent.</td>\n</tr>\n<tr>\n<td><em>notifyContentType</em></td>\n<td>String</td>\n<td>Preferred Delivery report content type. Can be <code>application/json</code> or <code>application/xml</code>.</td>\n</tr>\n<tr>\n<td><em>record</em></td>\n<td>Boolean</td>\n<td>Indicates if all calls using the scenario should be recorded.</td>\n</tr>\n<tr>\n<td><em>script[].options</em></td>\n<td>Object</td>\n<td><strong>Required.</strong></td>\n</tr>\n<tr>\n<td><em>script[].options.headers</em></td>\n<td>Object</td>\n<td>HTTP headers</td>\n</tr>\n<tr>\n<td><em>script[].options.collectResponse</em></td>\n<td>Boolean</td>\n<td>If this field is set, the system will parse the response and save all its fields as variables inside scenario. For example, if the response is <code>{\"letters\": \"abcd\", \"numbers\": 12345}</code>, the system will store variables letters and numbers, with values <code>abcd</code> and <code>12345</code> respectively. Nested JSON and XML objects are also supported; nested fields are resolved with underscore notation. For example, if the response is <code>{\"a\": {\"b\": {\"c\": \"xyz\"}}}</code>, the system will store <code>a_b_c</code> with value <code>xyz</code>. The response cannot contain duplicate keys or predefined words. Check the example Call Api with response. Response that is parsed can only be in JSON or XML. Predefined words: from, to, startTime, answerTime and machineAnswered.</td>\n</tr>\n<tr>\n<td><em>script[].actionId</em></td>\n<td>Int</td>\n<td>User-defined ID of an action that can be used with go-to action.</td>\n</tr>\n<tr>\n<td><em>script[].capture</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Variable name. If speech recognition matches one of the specified keyPhrases, a variable with this name will be set to match the keyphrase. Otherwise, this variable will be an empty string. Together with this variable, an implicit variable that contains the full text of the captured speech will be created. The name of this variable is constructed by adding _Full suffix to the variable name.</td>\n</tr>\n<tr>\n<td><em>script[].timeout</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Number of seconds used for capturing speech or digits failover. Minimum value is 1 and maximum value is 30. Can be overriden with speechOptions.maxSilence.</td>\n</tr>\n<tr>\n<td><em>script[].beep</em></td>\n<td>Boolean</td>\n<td>Flag indicating whether a beep sound should play at the start of capture.</td>\n</tr>\n<tr>\n<td><em>script[].speechOptions</em></td>\n<td>Object</td>\n<td><strong>Required.</strong></td>\n</tr>\n<tr>\n<td><em>script[].speechOptions.language</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Language used in speech that needs to be captured. For full list of supported languages see Supported languages.</td>\n</tr>\n<tr>\n<td><em>script[].speechOptions.keyPhrases</em></td>\n<td>Array</td>\n<td>Array of keyphrases used for matching capturing speech. If full captured text contains one of the specified phrases, that phrase will be set in variable specified in capture parameter. If keyphrases are not set or no matching is done, variable will be set to empty string. Every keyphrase can contain up to 5 words and number of keyphrases is not limited.</td>\n</tr>\n<tr>\n<td><em>script[].speechOptions.maxSilence</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> If used, this parameter defines the number of seconds of silence that will stop capturing. For example value of 3 defines that capturing stops as soon as 3 seconds of silence is detected or when timeout expires, whichever happens first. Minimum value is 1 and maximum value is 5. The value must be lower than the timeout value.</td>\n</tr>\n<tr>\n<td><em>script[].dtmfOptions</em></td>\n<td>Object</td>\n<td></td>\n</tr>\n<tr>\n<td><em>script[].dtmfOptions.maxInputLength</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Maximum acceptable number of digits. Capturing is stopped after this number of digits has been entered. If not set, maximum value will be used.</td>\n</tr>\n<tr>\n<td><em>script[].dtmfOptions.mappedValues</em></td>\n<td>Object</td>\n<td>Map of expected collected DTMF values with some real meaning. (Example: if you have multilingual IVR, and option for users to press 1 to enter \"English\" menu, you can define {\"1\":\"English\"}, so the reporting and analysis will be easier). When this option is defined additional variable is present in the scenario. If you set your capture action variable name to myVar, then you will get additional variable myVar_Meaning containing the mapped value for a collected DTMF. Keys can contain only digits and asterisks.</td>\n</tr>\n<tr>\n<td><em>script[].sendToReports</em></td>\n<td>String</td>\n<td>Choose if you want to show DTMF inputs in Voice reports and logs. Options are: ALWAYS (always send - default value), MASKED (send masked - xxxx will be shown in reports and logs), NEVER (don't send - DTMF inputs will not be shown in reports and logs). One of: <code>ALWAYS</code>, <code>MASKED</code>, <code>NEVER</code>.</td>\n</tr>\n<tr>\n<td><em>script[].collectInto</em></td>\n<td>String</td>\n<td><strong>Required.</strong> The name of the variable to set.</td>\n</tr>\n<tr>\n<td><em>script[].dial</em></td>\n<td>String</td>\n<td><strong>Required.</strong> must be a valid E164 MSISDN; the parameter can be constructed using variables</td>\n</tr>\n<tr>\n<td><em>script[].options.senderId</em></td>\n<td>String</td>\n<td>must be a valid E164 MSISDN; the parameter can be constructed using variables</td>\n</tr>\n<tr>\n<td><em>script[].options.maxCallDuration</em></td>\n<td>Int</td>\n<td>If set, call transfer will be limited by maxCallDuration seconds, must be a positive number, no upper bound.</td>\n</tr>\n<tr>\n<td><em>script[].options.customRingback</em></td>\n<td>Object</td>\n<td>Custom ringback tones configuration. Allows specifying different audio files to play during ringing and when the call fails.</td>\n</tr>\n<tr>\n<td><em>script[].options.customRingback.ringingAudio</em></td>\n<td>Object</td>\n<td><strong>Required.</strong></td>\n</tr>\n<tr>\n<td><em>script[].options.customRingback.ringingAudio.type</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Type of audio content One of: <code>FILE</code>, <code>URL</code>.</td>\n</tr>\n<tr>\n<td><em>script[].options.customRingback.failedAudio</em></td>\n<td>Object</td>\n<td></td>\n</tr>\n<tr>\n<td><em>script[].dialToMany</em></td>\n<td>Array</td>\n<td><strong>Required.</strong></td>\n</tr>\n<tr>\n<td><em>script[].dialToMany[].number</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Must be a valid E.164 number; the parameter can be constructed using variables</td>\n</tr>\n<tr>\n<td><em>script[].options.parallel</em></td>\n<td>Boolean</td>\n<td>Flag indicating that parallel (<code>true</code>), or sequential (<code>false</code>) Dial to Many will be executed.</td>\n</tr>\n<tr>\n<td><em>script[].dialToConversations</em></td>\n<td>Object</td>\n<td><strong>Required.</strong></td>\n</tr>\n<tr>\n<td><em>script[].dialToConversations.options.tagIdentifierType</em></td>\n<td>String</td>\n<td>Defines which identifier will be provided in the tags field. Possible values are ID and NAME. If not provided, default value of NAME is used. One of: <code>ID</code>, <code>NAME</code>.</td>\n</tr>\n<tr>\n<td><em>script[].dialToConversations.options.tags</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> An array of conversation tag names or ids that are assigned to this conversation for better categorization of the topics or customer intent. Value can be an array of tag names/ids, empty array, or null value.</td>\n</tr>\n<tr>\n<td><em>script[].for-each</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Variable name that will be used inside the loop to represent single value from supplied list of values.</td>\n</tr>\n<tr>\n<td><em>script[].delimiter</em></td>\n<td>String</td>\n<td>Delimiter for separating values in the list of values.</td>\n</tr>\n<tr>\n<td><em>script[].do</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> Array of actions to execute.</td>\n</tr>\n<tr>\n<td><em>script[].goTo</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> The actionId of an action to which to jump</td>\n</tr>\n<tr>\n<td><em>script[].options.goToLimit</em></td>\n<td>Int</td>\n<td>Maximum number of times goto can jump to specified action. Valid values are from 1 to 100.</td>\n</tr>\n<tr>\n<td><em>script[].options.countVariable</em></td>\n<td>String</td>\n<td>Name of the variable which counts passes through goto action</td>\n</tr>\n<tr>\n<td><em>script[].then</em></td>\n<td>Array</td>\n<td>The actions to execute if condition is evaluated to true.</td>\n</tr>\n<tr>\n<td><em>script[].else</em></td>\n<td>Array</td>\n<td>The actions to execute if condition is evaluated to false.</td>\n</tr>\n<tr>\n<td><em>script[].answeringMachineDetection</em></td>\n<td>Boolean</td>\n<td><strong>Required.</strong> Indicates whether machine detection should be performed.</td>\n</tr>\n<tr>\n<td><em>script[].options.waitEndOfMessageDetection</em></td>\n<td>String</td>\n<td>Indicates whether end of the message detection is enabled for the call. <code>ALWAYS</code> specifies that after detection of <code>MACHINE</code> the script will always wait for the end of the message before executing actions defined in <code>onMachineDetected</code>. <code>NEVER</code> specifies that after detection of <code>MACHINE</code> actions defined in <code>onMachineDetected</code> will be executed immediately. <code>ON_DETECTING</code> specifies that end of the message will be respected as long as actions in <code>onDetecting</code> are in progress, once these actions finish the script jumps to <code>onMachineDetected</code> section immediately. One of: <code>ALWAYS</code>, <code>NEVER</code>, <code>ON_DETECTING</code>.</td>\n</tr>\n<tr>\n<td><em>script[].options.endOfMessageDetectionTimeout</em></td>\n<td>Int</td>\n<td>Specifies the timeout (in seconds) to wait for the end of the message after a machine is detected. If set, actions defined in <code>onMachineDetected</code> will be executed only after the end of the message is detected or the timeout is reached. If not set, <code>onMachineDetected</code> actions will be triggered immediately after machine detection. If the timeout is reached before the end of the message, actions defined in <code>onTimeout</code> will be executed instead.</td>\n</tr>\n<tr>\n<td><em>script[].onDetecting</em></td>\n<td>Array</td>\n<td>Array of actions to execute while detection is in progress. A maximum of two actions of specific types (<code>Play</code>, <code>Say</code>, <code>Collect</code>) can be defined.</td>\n</tr>\n<tr>\n<td><em>script[].onMachineDetected</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> Array of actions to execute when a machine is detected, or when the end of the message is reached if <code>endOfMessageDetectionTimeout</code> is set. Actions defined in <code>onDetecting</code> are interrupted before these actions begin. If you do not intend to continue the scenario after <code>onMachineDetected</code>, include a <code>Hangup</code> action at the end of this section to terminate the call.</td>\n</tr>\n<tr>\n<td><em>script[].onTimeout</em></td>\n<td>Array</td>\n<td>Array of actions to execute when a machine is detected and the <code>endOfMessageDetectionTimeout</code> is reached. If you do not intend to continue the scenario after <code>onTimeout</code>, include a <code>Hangup</code> action at the end of this section to terminate the call.</td>\n</tr>\n<tr>\n<td><em>script[].onHumanDetected</em></td>\n<td>Array</td>\n<td>Array of actions to execute when a human is detected. Actions defined in <code>onDetecting</code> are interrupted before these actions begin. To avoid this interruption, omit this section and define the remaining scenario after this action. If you do not intend to continue the scenario after <code>onHumanDetected</code>, include a <code>Hangup</code> action at the end of this section to terminate the call.</td>\n</tr>\n<tr>\n<td><em>script[].pause</em></td>\n<td>Number</td>\n<td><strong>Required.</strong> the amount to wait in seconds, from 0 (exclusive) to 5 (inclusive)</td>\n</tr>\n<tr>\n<td><em>script[].playFromUrl</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Audio file URL. The parameter can be constructed using variables.</td>\n</tr>\n<tr>\n<td><em>script[].options.loopCount</em></td>\n<td>Int</td>\n<td>Number of times the file will be played.</td>\n</tr>\n<tr>\n<td><em>script[].playFromRecording</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Identifier of the recorded file. The parameter can be constructed using variables.</td>\n</tr>\n<tr>\n<td><em>script[].playFromUpload</em></td>\n<td>String</td>\n<td><strong>Required.</strong> ID of uploaded file. The parameter can be constructed using variables.</td>\n</tr>\n<tr>\n<td><em>script[].playTty</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Text that will be played in Baudot tones. The parameter can be constructed using variables.</td>\n</tr>\n<tr>\n<td><em>script[].options.escapeDigits</em></td>\n<td>String</td>\n<td>DTMF codes which should stop recording when input by the user.</td>\n</tr>\n<tr>\n<td><em>script[].repeat</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> Array of actions to execute.</td>\n</tr>\n<tr>\n<td><em>script[].while</em></td>\n<td>String</td>\n<td><strong>Required.</strong> The expression to evaluate.</td>\n</tr>\n<tr>\n<td><em>script[].say</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Message text. SSML (<em>Speech Synthesis Markup Language</em>) is supported and can be used to fully customize pronunciation of the provided text. The parameter can be constructed using variables.</td>\n</tr>\n<tr>\n<td><em>script[].options.voice</em></td>\n<td>Object</td>\n<td></td>\n</tr>\n<tr>\n<td><em>script[].options.voice.gender</em></td>\n<td>String</td>\n<td>Gender in which the text would be synthesized. The parameter can be constructed using variables.</td>\n</tr>\n<tr>\n<td><em>script[].options.speechRate</em></td>\n<td>Number</td>\n<td>Must be within [0.5 - 2.0] range, default value is 1.</td>\n</tr>\n<tr>\n<td><em>script[].sendSms</em></td>\n<td>Object</td>\n<td><strong>Required.</strong></td>\n</tr>\n<tr>\n<td><em>script[].sendSms.from</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Represents sender ID and it can be alphanumeric or numeric; alphanumeric sender ID length should be between 3 and 11 characters; numeric sender ID length should be between 3 and 14 characters; the parameter can be constructed using variables</td>\n</tr>\n<tr>\n<td><em>script[].setVariable</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Name of a variable.</td>\n</tr>\n<tr>\n<td><em>script[].value</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Value to which the variable should be set. The parameter can be constructed using variables.</td>\n</tr>\n<tr>\n<td><em>script[].switch</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Name of the variable whose value to inspect.</td>\n</tr>\n<tr>\n<td><em>script[].case</em></td>\n<td>Object</td>\n<td><strong>Required.</strong></td>\n</tr>\n<tr>\n<td>_script[].case._<em>default</em></td>\n<td>Array</td>\n<td>Array of actions to execute if none of the conditions above are met.</td>\n</tr>\n<tr>\n<td><em>lastUsageDate</em></td>\n<td>String</td>\n<td>Last usage date. <code>null</code> for scenarios that are used last time before <code>2024-01-01</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["voice","ivr","1","scenarios","{{id}}"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"3fc3ccb9-4b5c-446a-bb57-22c688d06f56","name":"Get a voice IVR scenario","originalRequest":{"method":"GET","header":[],"url":"https://go2.vhdmedia.se/voice/ivr/1/scenarios/{{id}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"372"},{"key":"Date","value":"Tue, 25 Apr 2023 10:15:38 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1682417739076789228"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": \"5734EF89BEC28D09B7DF26E298242E97\",\n    \"name\": \"Call API\",\n    \"description\": \"Perform a POST request to provided URL with headers and payload.\",\n    \"createTime\": \"2023-04-25T08:32:18.410+0000\",\n    \"updateTime\": null,\n    \"script\": [\n        {\n            \"request\": \"https://requestb.in/12345\",\n            \"options\": {\n                \"method\": \"POST\",\n                \"headers\": {\n                    \"content-type\": \"application/json\"\n                },\n                \"body\": {\n                    \"payload\": \"${to} finished the IVR.\"\n                }\n            }\n        }\n    ]\n}"}],"_postman_id":"5e0dcc9d-f719-4eb8-8123-0acbec29d25f"},{"name":"Update a Voice IVR Scenario","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"id\", \"name\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","",""],"type":"text/javascript","packages":{}}}],"id":"1e70bdd0-6446-4931-a556-6ec5e1c3d124","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Sample scenario\",\n  \"description\": \"Updated: a different message.\",\n  \"script\": [\n    {\n      \"say\": \"Updated message from the VHD API\"\n    },\n    \"hangup\"\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/voice/ivr/1/scenarios/{{id}}","description":"<p>This method allows you to update a Voice IVR Scenario.</p>\n<h5 id=\"request-rate-limit\">REQUEST RATE LIMIT:</h5>\n<p>1 requests / minute (per account)</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>id</em></td>\n<td>string</td>\n<td>Required.  <br />  <br />Scenario identifier.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-rate-limit-1\">Request rate limit</h3>\n<p>1 requests / second (per account)</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>The name of IVR scenario.</td>\n</tr>\n<tr>\n<td>description</td>\n<td>string</td>\n<td>Description of IVR scenario.</td>\n</tr>\n<tr>\n<td>script  <br /></td>\n<td></td>\n<td>Required  <br />Array of Call API (object) or Capture (object) or Collect (object) or Dial (object) or Dial to Many (object) or Dial to WebRTC (object) or Dial to SIP trunk (object) or Dial to Conversations (object) or For-Each (object) or Go-To (object) or Hang-up (string) or If-Then-Else (object) or Machine Detection (string) or Pause (object) or Play (object) or Play From Recording (object) or Record (object) or Repeat-Until (object) or Repeat-While (object) or Say (object) or Send SMS (object) or Set Variable (object) or Switch-Case (object) or While-Do (object)  <br />Array of IVR actions defining scenario. NOTE: Answering Machine Detection, Call Recording and Speech Recognition (used for Capture action) are add-on features. To enable these add-ons, please contact our sales organisation.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Array [</p>\n<p>One of</p>\n<p>Call API</p>\n<p>Call API Action performs an HTTP request to a client’s endpoint, and (if told to) processes the response data. If collectResponse is set, the system will attempt to parse the response from the server. Our platform needs to be able to make HTTP requests to the specified endpoint.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>request</td>\n<td>string</td>\n<td>The URL to target</td>\n</tr>\n<tr>\n<td>options  <br />{  <br />method  <br />  <br />headers  <br />  <br />collectResponse  <br /></td>\n<td>object  <br />  <br />string  <br />  <br />object  <br />  <br />boolean</td>\n<td>Required  <br />  <br />GET, POST, PUT, DELETE  <br />  <br />HTTP headers  <br />  <br />If this field is set, the system will parse the response and save all its fields as variables inside scenario. Note: Parser ignores non-primitive fields and does not go deeper than the first level. For example, if the response is {\"letters\": \"abcd\", \"numbers\": 12345}, the system will store variables letters and numbers, with values abcd and 12345 respectively. Check the example Say action with Call Api Responses. Response that is parsed can only be in JSON or XML.  <br /></td>\n</tr>\n<tr>\n<td>actionId</td>\n<td>integer</td>\n<td>User-defined ID of an action that can be used with go-to action.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Capture</strong></p>\n<p>Capture action performs speech recognition of a specified duration. The recognized text can be used in other actions of the scenario.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>capture</td>\n<td>string</td>\n<td>Required.  <br />  <br />Variable name. If speech recognition matches one of the specified <code>keyPhrases</code>, a variable with this name will be set to match the keyphrase. Otherwise, this variable will be an <code>empty string</code>. Together with this variable, an implicit variable that contains the full text of the captured speech will be created. The name of this variable is constructed by adding <code>_Full</code> suffix to the variable name.  <br />  <br /></td>\n</tr>\n<tr>\n<td>timeout</td>\n<td>integer</td>\n<td>Number of seconds used for capturing speech or digits failover. Minimum value is 1 and maximum value is 30. Can be overriden with speechOptions.maxSilence.</td>\n</tr>\n<tr>\n<td>speechOptions  <br />{  <br />  <br />language  <br />  <br />  <br />  <br />  <br />keyPhrases  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />maxSilence  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />}</td>\n<td>obejct  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />array of strings  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />integer  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br /></td>\n<td>Required.  <br />  <br />  <br />Language used in speech that needs to be captured. For full list of supported languages see LINK.  <br />  <br />Array of keyphrases used for matching capturing speech. If full captured text contains one of the specified phrases, that phrase will be set in variable specified in capture parameter. If keyphrases are not set or no matching is done, variable will be set to empty string. Every keyphrase can contain up to 5 words and number of keyphrases is not limited.  <br />  <br />  <br />  <br />  <br />  <br />If used, this parameter defines the number of seconds of silence that will stop capturing. For example value of <code>3</code> defines that capturing stops as soon as 3 seconds of silence is detected or when timeout expires, whichever happens first. Minimum value is <code>1</code> and maximum value is <code>5</code>.</td>\n</tr>\n<tr>\n<td>dtmfOptions  <br />{  <br />  <br />maxInputLength  <br />  <br />  <br />  <br />  <br />  <br />mappedValues  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />}</td>\n<td>object  <br />  <br />  <br />integer  <br />  <br />  <br />  <br />  <br />  <br />object  <br />  <br /></td>\n<td><br />  <br />  <br />Maximum acceptable number of digits. Capturing is stopped after this number of digits has been entered. Max accepted value is 255. If not set, maximum value will be used.  <br />  <br />Map of expected collected DTMF values with some real meaning. (Example: if you have multilingual IVR, and option for users to press 1 to enter \"English\" menu, you can define {\"1\":\"English\"}, so the reporting and analysis will be easier). When this option is defined additional variable is present in the scenario. If you set your capture action variable name to myVar, then you will get additional variable myVar_Meaning containing the mapped value for a collected DTMF.</td>\n</tr>\n<tr>\n<td>sendToReports</td>\n<td>string</td>\n<td>Choose if you want to show DTMF inputs in Voice reports and logs. Options are: <code>ALWAYS</code> (always send - default value), <code>MASKED</code> (send masked - xxxx will be shown in reports and logs), <code>NEVER</code> (don't send - DTMF inputs will not be shown in reports and logs).  <br />  <br /></td>\n</tr>\n<tr>\n<td>actionId</td>\n<td>integer</td>\n<td>User-defined ID of an action that can be used with go-to action.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Collect</strong></p>\n<p>Collect action reads the DTMF input from the user’s phone and saves it into a variable. Saved variable can be used within the IVR in any other action that allows variable usage. (e.g. switch/case).</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>collectInto</td>\n<td>string</td>\n<td>Required.  <br />The name of the variable to set.</td>\n</tr>\n<tr>\n<td>options  <br />{  <br />maxInputLength  <br />  <br />  <br />  <br />  <br />  <br />timeout  <br />  <br />  <br />  <br />sendToReports  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />mappedValues  <br />  <br />}</td>\n<td>object  <br />  <br />integer  <br />  <br />  <br />  <br />  <br />  <br />integer  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />object</td>\n<td>Required  <br />  <br />Maximum acceptable number of digits. Stops reading after maxdigits have been entered (without requiring the user to press '#' key). Max accepted value is 255. If set to 0 then max value is applied.  <br />  <br />Timeout in seconds for user to press the digit(s). Default value is 5. Max value is 30.  <br />  <br />  <br />Choose if you want to show DTMF inputs in Voice reports and logs. Options are: ALWAYS (always send - default value), MASKED (send masked - xxxx will be shown in reports and logs), NEVER (don't send - DTMF inputs will not be shown in reports and logs).  <br />  <br />Map of expected collected DTMF values with some real meaning. (Example: if you have multilingual IVR, and option for users to press 1 to enter \"English\" menu, you can define {\"1\":\"English\"}, so the reporting and analysis will be easier). When this option is defined additional variable is present in the scenario. If you set your collect action variable name to myVar, then you will get additional variable myVar_Meaning containing the mapped value for a collected DTMF.</td>\n</tr>\n<tr>\n<td>actionId</td>\n<td>integer</td>\n<td>User-defined ID of an action that can be used with go-to action.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Dial</strong></p>\n<p>Dial action performs a call redirection, joining the user's call with another destination. After Dial action the following actions are forbidden: Say, Collect, Dial, Dial to Many, Dial to WebRTC, Dial to SIP trunk, Dial to Conversations, Play, Record and Play from Recording.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>dial</td>\n<td>string</td>\n<td>Required.  <br />  <br />must be a valid E164 MSISDN; the parameter can be constructed using variables</td>\n</tr>\n<tr>\n<td>options  <br />{  <br />senderId  <br />  <br />  <br />  <br />  <br />  <br />maxCallDuration  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />}</td>\n<td>object  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />integer  <br />  <br />  <br />  <br /></td>\n<td>Required  <br />  <br />must be a valid E164 MSISDN; the parameter can be constructed using variables  <br />  <br />  <br />If set, call transfer will be limited by maxCallDuration seconds, must be a positive number, no upper bound.  <br />  <br />  <br /></td>\n</tr>\n<tr>\n<td>actionId</td>\n<td>integer</td>\n<td>User-defined ID of an action that can be used with go-to action.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Dial to Many</strong></p>\n<p>Dial to Many action performs a call redirection to multiple destinations, joining the user’s call only with the destination that answered the call first. After Dial to Many action the following actions are forbidden: Say, Collect, Dial, Dial to Many, Dial to WebRTC, Dial to SIP trunk, Dial to Conversations, Play, Record and Play from Recording.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>dialToMany  <br />  <br />[{  <br />  <br />number  <br />  <br />  <br />  <br />  <br />  <br />  <br />numbers  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />}]</td>\n<td>arry of objects  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />  <br />string</td>\n<td>Required.  <br />  <br />  <br />  <br />must be a valid E164 MSISDN; the parameter can be constructed using variables.  <br />  <br />must be a comma-separated list of valid E164 MSISDN numbers; the parameter can be constructed using variables</td>\n</tr>\n<tr>\n<td>options  <br />  <br />{  <br />  <br />parallel  <br />  <br />  <br />  <br />senderId  <br />  <br />  <br />  <br />maxCallDuration  <br />  <br />  <br />  <br />ringTimeout  <br />  <br />  <br />  <br />  <br /></td>\n<td>obect  <br />  <br />  <br />  <br />boolean  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />integer  <br />  <br />  <br />  <br />integer</td>\n<td><br />  <br />  <br />  <br />Flag indicating that parallel (true), or sequential (false) Dial to Many will be executed.  <br />  <br />Must be a valid E164 MSISDN; the parameter can be constructed using variables.  <br />  <br />If set, call transfer will be limited by maxCallDuration seconds; must be a positive number, no upper bound.  <br />  <br />If set limits the duration of the ringing of transferred calls in seconds. The default value is 30 seconds. This parameter can be changed only for sequential calls.</td>\n</tr>\n<tr>\n<td>actionId</td>\n<td>integer</td>\n<td>User-defined ID of an action that can be used with go-to action.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Dial to WebRTC</strong></p>\n<p>Dial to WebRTC action performs a call redirection to WebRTC application, joining the user’s call with the WebRTC application. After Dial to WebRTC action the following actions are forbidden: Say, Collect, Dial, Dial to Many, Dial to WebRTC, Dial to SIP trunk, Dial to Conversations, Play, Record and Play from Recording.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>dialToWebRTC</td>\n<td>string</td>\n<td>Required.  <br />  <br />Web and in-app calls applicationId. Read more about Web and in-app calls here</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Dial to SIP trunk</strong></p>\n<p>Dial to SIP trunk action performs a call to the specified SIP trunk. SIP trunk must be created on VHD platform before using this action. After Dial to SIP trunk action the following actions are forbidden: Say, Collect, Dial, Dial to Many, Dial to WebRTC, Dial to SIP trunk, Dial to Conversations, Play, Record and Play from Recording.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>dialToSipTrunk  <br /></td>\n<td>object</td>\n<td>Required.  <br />  <br />Only one of these two properties (ipAddress, domainName) can be set.</td>\n</tr>\n<tr>\n<td>options  <br />{  <br />  <br />from  <br />  <br />  <br />  <br />  <br />to  <br />  <br />  <br />  <br />  <br />headers  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />]</td>\n<td>object  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object</td>\n<td><br />  <br />  <br />String identifying who is calling. The parameter can be constructed using variables.  <br />  <br />  <br />String identifying who is called. The parameter can be constructed using variables.  <br />  <br />  <br />Additional headers to be sent to SIP trunk. If header key or value contains \\n or \\r, these characters will be removed. Header size is limited to 256 bytes, which includes header key and value together. X- prefix will be added internally to all headers. The parameter can be constructed using variables.</td>\n</tr>\n<tr>\n<td>actionId</td>\n<td>integer</td>\n<td>User-defined ID of an action that can be used with go-to action.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Dial to Conversations</strong></p>\n<p>Dial to Conversations action performs a call redirection to the VHD Conversations platform, joining the user’s call with an agent. After Dial to Conversations action the following actions are forbidden: Say, Collect, Dial, Dial to Many, Dial to WebRTC, Dial to SIP trunk, Dial to Conversations, Play, Record and Play from Recording.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>dialToConversations  <br />  <br />{  <br />  <br />  <br />  <br />options  <br />  <br />{  <br />  <br />  <br />tags  <br />  <br />  <br />  <br />}  <br />  <br />  <br />  <br />  <br />  <br />  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />array of strings</td>\n<td>Required.  <br />  <br />Only one of these two properties (ipAddress, domainName) can be set.  <br />  <br />Required  <br />Contains options to be associated to the dial to conversations action  <br />  <br />  <br />An array of conversation tag names that are assigned to this conversation for better categorization of the topics or customer intent. Value can be an array of tag names, empty array, or null value.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>For-Each</strong></p>\n<p>For-each action is a control statement that executes a block of code for each of the values within the supplied list. The Supplied list of values can be static or dynamic (defined as user variable).</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>for-each</td>\n<td>string</td>\n<td>Required.  <br />  <br />Variable name that will be used inside the loop to represent single value from supplied list of values.</td>\n</tr>\n<tr>\n<td>in</td>\n<td>string</td>\n<td>Required.  <br />  <br />Delimited string representing list of values; the parameter can be constructed using variables.</td>\n</tr>\n<tr>\n<td>delimiter</td>\n<td>string</td>\n<td>Delimiter used for separating values in supplied list of values; the parameter can be constructed using variables. Default is comma.</td>\n</tr>\n<tr>\n<td>do</td>\n<td>arry of objects</td>\n<td>Required.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Go-To</strong></p>\n<p>Go-To action is used to go back to some specified action that was already executed in the scenario and continue the execution from that point.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>goTo</td>\n<td>integer</td>\n<td>Required.  <br />  <br />The actionId of an action to which to jumpç</td>\n</tr>\n<tr>\n<td>options  <br />{  <br />  <br />gotoLimit  <br />  <br />  <br />  <br />countVariable  <br />  <br />}</td>\n<td>object  <br />  <br />  <br />integer  <br />  <br />  <br />  <br />string</td>\n<td><br />  <br />  <br />Maximum number of times goto can jump to specified action. Valid values are from 1 to 100.  <br />  <br />Name of the variable which counts passes through goto action.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Hang-up</strong></p>\n<p>Hangup action marks the end of the IVR flow execution, leading to the call actually being hung up.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><br />Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>Hang-up</strong></td>\n<td>string</td>\n<td>Value: \"hangup\"</td>\n</tr>\n</tbody>\n</table>\n</div><p>If-Then-Else</p>\n<p>If-Then-Else action provides simple branching based on a condition. If the condition evaluates to true, the then block is executed, otherwise the else block is executed. Only one of the blocks is required to be non-empty.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>If-Then-Else</td>\n<td>string</td>\n<td>Required.  <br />  <br />The expression to evaluate</td>\n</tr>\n<tr>\n<td>then</td>\n<td>array of objects</td>\n<td>The actions to execute if condition is evaluated to true</td>\n</tr>\n<tr>\n<td>else</td>\n<td>arry of objects</td>\n<td>The actions to execute if condition is evaluated to false</td>\n</tr>\n<tr>\n<td>actionId</td>\n<td>integer</td>\n<td>User-defined ID of an action that can be used with go-to action.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Machine Detection</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Machine Detection</td>\n<td>string</td>\n<td>Required.  <br />  <br />Value: \"machineDetection\"  <br />Machine Detection action detects answering machines at the beginning of the call. This action sets machineAnswered variable upon completion to true or false. Machine Detection introduces a delay of approximately 4s. This is the minimum time needed for machine detection. Machine Detection action has to be followed by a condition action that uses the value of machineAnswered for branching into the 'human answered' block and the 'answering machine answered' block. The 'answering machine' block can have a Say/Play/PlayFromRecording action or a Hangup action. If answering machine is detected, and a Say/Play/Play from Recording action is up next - the voice message will start playing into the voice mail only after the answering machine is finished with its greeting.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Pause</p>\n<p>Pause action pauses execution of the IVR scenario for the provided duration.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>pause</td>\n<td>number</td>\n<td>Required.  <br />  <br />the amount to wait in seconds, from 0 (exclusive) to 5 (inclusive)</td>\n</tr>\n<tr>\n<td>actionId</td>\n<td>integer</td>\n<td>User-defined ID of an action that can be used with go-to action.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Play</p>\n<p>Play action performs playback of audio provided by the client’s URL. Supported formats of the provided file are aac, aiff, m4a, mp2, mp3, mp4 (audio only), ogg, wav and wma. Our platform needs to have permission to make GET and HEAD HTTP requests on the provided URL. Standard http ports (like 80, 8080, etc.) are advised.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>playFromUrl</td>\n<td>string</td>\n<td>Required.  <br />Audio file URL.</td>\n</tr>\n<tr>\n<td>actionId</td>\n<td>integer</td>\n<td>User-defined ID of an action that can be used with go-to action.</td>\n</tr>\n</tbody>\n</table>\n</div><p>playFromRecording</p>\n<p>Play from Recording Action plays audio recorded from the current or some other call.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>playFromRecording</td>\n<td>string</td>\n<td>Required.  <br />Can be null (play last recorded audio from the current call), number (play the recording passed index) or text (play recording with identifier - current or previous call)</td>\n</tr>\n<tr>\n<td>actionId</td>\n<td>integer</td>\n<td>User-defined ID of an action that can be used with go-to action.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Record</p>\n<p>Record action records a portion of the call. The recording starts at the moment where the Record action is added in the IVR.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>record</td>\n<td>integer</td>\n<td>Required.  <br />The duration to record for in seconds; null for unlimited.</td>\n</tr>\n<tr>\n<td>options  <br />{  <br />escapeDigits  <br />  <br />  <br />beep  <br />  <br />  <br />maxSilence  <br />  <br />  <br />identifier  <br />  <br />}</td>\n<td>object  <br />  <br />string  <br />  <br />  <br />boolean  <br />  <br />  <br />integer  <br />  <br />  <br />string</td>\n<td><br />  <br />DTMF codes which should stop recording when input by the user.  <br />  <br />Flag indicating a beep sound should be played at the start of the recording.  <br />  <br />The amount of silence to wait for before stopping the recording.  <br />  <br />The identifier for the recording. Identified recordings can be reused in Play from Recording. The parameter can be constructed using variables.</td>\n</tr>\n<tr>\n<td>actionId</td>\n<td>integer</td>\n<td>User-defined ID of an action that can be used with go-to action.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Rpeat-Until</p>\n<p>This action is deprecated and should not be used, as it leads to incorrect behaviour and it will not be supported in the future. Please, use repeat-while loop instead.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>repeat</td>\n<td>array of objects</td>\n<td>Required.</td>\n</tr>\n<tr>\n<td>until</td>\n<td>string</td>\n<td>The expression to evaluate.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Repeat-While</p>\n<p>Repeat-While action is a control flow statement that repeatedly executes a block of code, as long as the boolean condition in the while field is true. Comparison is done using equal (==) or not equal (!=) operators. Make sure not to provide a condition that causes an infinite loop.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>repeat</td>\n<td>array of objects</td>\n<td>Required.</td>\n</tr>\n<tr>\n<td>while</td>\n<td>string</td>\n<td>The expression to evaluate.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Say</p>\n<p>Say action converts provided text into an audio file which is played during the call based on the provided parameters. Message text can be up to 1400 characters long.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>say</td>\n<td>string</td>\n<td>Required.  <br />Message text. Cannot contain only punctuation.</td>\n</tr>\n<tr>\n<td>options  <br />{  <br />  <br />language  <br />  <br />  <br />voice  <br />  <br />{  <br />  <br />name  <br />  <br />  <br />gender  <br />  <br />  <br />}  <br />  <br />speechRate  <br />  <br />}  <br /></td>\n<td>object  <br />  <br />  <br />string  <br />  <br />  <br />object  <br />  <br />  <br />  <br />string  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />number</td>\n<td>The expression to evaluate.  <br />  <br />  <br />Must be defined for correct pronunciation.  <br />  <br />Used to define the voice in which the text would be synthesized.  <br />  <br />  <br />Name of the voice in which the text would be synthesized.  <br />  <br />Gender in which the text would be synthesized.  <br />  <br />  <br />  <br />Must be within [0.5 - 2.0] range, default value is 1.</td>\n</tr>\n<tr>\n<td>actionId</td>\n<td>integer</td>\n<td>User-defined ID of an action that can be used with go-to action.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Send SMS</p>\n<p>Send SMS action creates and sends a text message from the scenario.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>sendSms  <br />{  <br />  <br />  <br />text  <br />  <br />  <br />  <br />from  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />to  <br />  <br />  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />string</td>\n<td>Required.  <br />Message text. Cannot contain only punctuation.  <br />  <br />Required.  <br />The text of the message that will be sent.  <br />  <br />Represents sender ID and it can be alphanumeric or numeric; alphanumeric sender ID length should be between 3 and 11 characters; numeric sender ID length should be between 3 and 14 characters; the parameter can be constructed using variables.  <br />  <br />Required.  <br />Must be a valid E164 MSISDN; the parameter can be constructed using variables  <br /></td>\n</tr>\n<tr>\n<td>actionId</td>\n<td>integer</td>\n<td>User-defined ID of an action that can be used with go-to action.</td>\n</tr>\n</tbody>\n</table>\n</div><p>]</p>\n<p>Set Variable</p>\n<p>Set variable action makes it possible to set a variable defined inside the IVR scenario to a specified value.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>setVariable</td>\n<td>string</td>\n<td>Required.  <br />Name of a variable.</td>\n</tr>\n<tr>\n<td>value</td>\n<td>string</td>\n<td>Value to which the variable should be set.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Switch-Case</p>\n<p>Switch-Case action takes a saved variable (obtained via either a Collect, Call API action or scenario parameters) and performs flow control based on it. It works similarly to the switch case block, using case-sensitive comparison.</p>\n<p>View More</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>switch</td>\n<td>string</td>\n<td>Required.  <br />Name of the variable whose value to inspect.</td>\n</tr>\n<tr>\n<td>case  <br />{  <br />  <br />  <br />_default  <br />  <br />  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />array of objects</td>\n<td>Object whose keys are possible variable values, and values are arrays of actions.  <br />  <br />Array of actions to execute if none of the conditions above are met.</td>\n</tr>\n<tr>\n<td>actionId</td>\n<td>integer</td>\n<td>User-defined ID of an action that can be used with go-to action.</td>\n</tr>\n</tbody>\n</table>\n</div><p>While-Do</p>\n<p>While-Do action executes the do field block of code as long as a specified condition is true in the while field. As with Repeat-While, comparison is done using equal (==) or not equal (! =) operators. Make sure not to provide a condition that causes an infinite loop.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Property</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>while</td>\n<td>string</td>\n<td>Required.  <br />The expression to evaluate.</td>\n</tr>\n<tr>\n<td>do</td>\n<td>arry of objects</td>\n<td>Required.</td>\n</tr>\n</tbody>\n</table>\n</div><p>]</p>\n<h3 id=\"response\">Response</h3>\n<p>Default sucessful response</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>createTime</td>\n<td>object</td>\n<td>Creation timestamp.</td>\n</tr>\n<tr>\n<td>description</td>\n<td>object</td>\n<td>Scenario description.</td>\n</tr>\n<tr>\n<td>id</td>\n<td>string</td>\n<td>Scenario key. It is used for launching IVR scenario.</td>\n</tr>\n<tr>\n<td>name</td>\n<td></td>\n<td>Scenario name.</td>\n</tr>\n<tr>\n<td>script</td>\n<td>object</td>\n<td>The list of scenario actions.</td>\n</tr>\n<tr>\n<td>updateTime</td>\n<td>string</td>\n<td>Update timestamp</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-response\">Error response</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>requestError</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>serviceException</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>Identifier of the error</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Detailed error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-request-fields\">Additional request fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>notifyUrl</em></td>\n<td>String</td>\n<td>The URL on your callback server on which the Delivery report will be sent.</td>\n</tr>\n<tr>\n<td><em>notifyContentType</em></td>\n<td>String</td>\n<td>Preferred Delivery report content type. Can be <code>application/json</code> or <code>application/xml</code>.</td>\n</tr>\n<tr>\n<td><em>script[].options.customRingback</em></td>\n<td>Object</td>\n<td>Custom ringback tones configuration. Allows specifying different audio files to play during ringing and when the call fails.</td>\n</tr>\n<tr>\n<td><em>script[].options.customRingback.ringingAudio</em></td>\n<td>Object</td>\n<td><strong>Required.</strong></td>\n</tr>\n<tr>\n<td><em>script[].options.customRingback.failedAudio</em></td>\n<td>Object</td>\n<td></td>\n</tr>\n<tr>\n<td><em>script[].dialToConversations.options.tagIdentifierType</em></td>\n<td>String</td>\n<td>Defines which identifier will be provided in the tags field. Possible values are ID and NAME. If not provided, default value of NAME is used. One of: <code>ID</code>, <code>NAME</code>.</td>\n</tr>\n<tr>\n<td><em>script[].options.goToLimit</em></td>\n<td>Int</td>\n<td>Maximum number of times goto can jump to specified action. Valid values are from 1 to 100.</td>\n</tr>\n<tr>\n<td><em>script[].answeringMachineDetection</em></td>\n<td>Boolean</td>\n<td><strong>Required.</strong> Indicates whether machine detection should be performed.</td>\n</tr>\n<tr>\n<td><em>script[].options.waitEndOfMessageDetection</em></td>\n<td>String</td>\n<td>Indicates whether end of the message detection is enabled for the call. <code>ALWAYS</code> specifies that after detection of <code>MACHINE</code> the script will always wait for the end of the message before executing actions defined in <code>onMachineDetected</code>. <code>NEVER</code> specifies that after detection of <code>MACHINE</code> actions defined in <code>onMachineDetected</code> will be executed immediately. <code>ON_DETECTING</code> specifies that end of the message will be respected as long as actions in <code>onDetecting</code> are in progress, once these actions finish the script jumps to <code>onMachineDetected</code> section immediately. One of: <code>ALWAYS</code>, <code>NEVER</code>, <code>ON_DETECTING</code>.</td>\n</tr>\n<tr>\n<td><em>script[].options.endOfMessageDetectionTimeout</em></td>\n<td>Int</td>\n<td>Specifies the timeout (in seconds) to wait for the end of the message after a machine is detected. If set, actions defined in <code>onMachineDetected</code> will be executed only after the end of the message is detected or the timeout is reached. If not set, <code>onMachineDetected</code> actions will be triggered immediately after machine detection. If the timeout is reached before the end of the message, actions defined in <code>onTimeout</code> will be executed instead.</td>\n</tr>\n<tr>\n<td><em>script[].onDetecting</em></td>\n<td>Array</td>\n<td>Array of actions to execute while detection is in progress. A maximum of two actions of specific types (<code>Play</code>, <code>Say</code>, <code>Collect</code>) can be defined.</td>\n</tr>\n<tr>\n<td><em>script[].onMachineDetected</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> Array of actions to execute when a machine is detected, or when the end of the message is reached if <code>endOfMessageDetectionTimeout</code> is set. Actions defined in <code>onDetecting</code> are interrupted before these actions begin. If you do not intend to continue the scenario after <code>onMachineDetected</code>, include a <code>Hangup</code> action at the end of this section to terminate the call.</td>\n</tr>\n<tr>\n<td><em>script[].onTimeout</em></td>\n<td>Array</td>\n<td>Array of actions to execute when a machine is detected and the <code>endOfMessageDetectionTimeout</code> is reached. If you do not intend to continue the scenario after <code>onTimeout</code>, include a <code>Hangup</code> action at the end of this section to terminate the call.</td>\n</tr>\n<tr>\n<td><em>script[].onHumanDetected</em></td>\n<td>Array</td>\n<td>Array of actions to execute when a human is detected. Actions defined in <code>onDetecting</code> are interrupted before these actions begin. To avoid this interruption, omit this section and define the remaining scenario after this action. If you do not intend to continue the scenario after <code>onHumanDetected</code>, include a <code>Hangup</code> action at the end of this section to terminate the call.</td>\n</tr>\n<tr>\n<td><em>script[].options.loopCount</em></td>\n<td>Int</td>\n<td>Number of times the file will be played.</td>\n</tr>\n<tr>\n<td><em>script[].playFromUpload</em></td>\n<td>String</td>\n<td><strong>Required.</strong> ID of uploaded file. The parameter can be constructed using variables.</td>\n</tr>\n<tr>\n<td><em>script[].playTty</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Text that will be played in Baudot tones. The parameter can be constructed using variables.</td>\n</tr>\n<tr>\n<td>_script[].case._<em>default</em></td>\n<td>Array</td>\n<td>Array of actions to execute if none of the conditions above are met.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-response-fields\">Additional response fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>notifyUrl</em></td>\n<td>String</td>\n<td>The URL on the client's callback server on which the Delivery report will be sent.</td>\n</tr>\n<tr>\n<td><em>notifyContentType</em></td>\n<td>String</td>\n<td>Preferred Delivery report content type. Can be <code>application/json</code> or <code>application/xml</code>.</td>\n</tr>\n<tr>\n<td><em>script[].options.customRingback</em></td>\n<td>Object</td>\n<td>Custom ringback tones configuration. Allows specifying different audio files to play during ringing and when the call fails.</td>\n</tr>\n<tr>\n<td><em>script[].options.customRingback.ringingAudio</em></td>\n<td>Object</td>\n<td><strong>Required.</strong></td>\n</tr>\n<tr>\n<td><em>script[].options.customRingback.failedAudio</em></td>\n<td>Object</td>\n<td></td>\n</tr>\n<tr>\n<td><em>script[].dialToConversations.options.tagIdentifierType</em></td>\n<td>String</td>\n<td>Defines which identifier will be provided in the tags field. Possible values are ID and NAME. If not provided, default value of NAME is used. One of: <code>ID</code>, <code>NAME</code>.</td>\n</tr>\n<tr>\n<td><em>script[].options.goToLimit</em></td>\n<td>Int</td>\n<td>Maximum number of times goto can jump to specified action. Valid values are from 1 to 100.</td>\n</tr>\n<tr>\n<td><em>script[].answeringMachineDetection</em></td>\n<td>Boolean</td>\n<td><strong>Required.</strong> Indicates whether machine detection should be performed.</td>\n</tr>\n<tr>\n<td><em>script[].options.waitEndOfMessageDetection</em></td>\n<td>String</td>\n<td>Indicates whether end of the message detection is enabled for the call. <code>ALWAYS</code> specifies that after detection of <code>MACHINE</code> the script will always wait for the end of the message before executing actions defined in <code>onMachineDetected</code>. <code>NEVER</code> specifies that after detection of <code>MACHINE</code> actions defined in <code>onMachineDetected</code> will be executed immediately. <code>ON_DETECTING</code> specifies that end of the message will be respected as long as actions in <code>onDetecting</code> are in progress, once these actions finish the script jumps to <code>onMachineDetected</code> section immediately. One of: <code>ALWAYS</code>, <code>NEVER</code>, <code>ON_DETECTING</code>.</td>\n</tr>\n<tr>\n<td><em>script[].options.endOfMessageDetectionTimeout</em></td>\n<td>Int</td>\n<td>Specifies the timeout (in seconds) to wait for the end of the message after a machine is detected. If set, actions defined in <code>onMachineDetected</code> will be executed only after the end of the message is detected or the timeout is reached. If not set, <code>onMachineDetected</code> actions will be triggered immediately after machine detection. If the timeout is reached before the end of the message, actions defined in <code>onTimeout</code> will be executed instead.</td>\n</tr>\n<tr>\n<td><em>script[].onDetecting</em></td>\n<td>Array</td>\n<td>Array of actions to execute while detection is in progress. A maximum of two actions of specific types (<code>Play</code>, <code>Say</code>, <code>Collect</code>) can be defined.</td>\n</tr>\n<tr>\n<td><em>script[].onMachineDetected</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> Array of actions to execute when a machine is detected, or when the end of the message is reached if <code>endOfMessageDetectionTimeout</code> is set. Actions defined in <code>onDetecting</code> are interrupted before these actions begin. If you do not intend to continue the scenario after <code>onMachineDetected</code>, include a <code>Hangup</code> action at the end of this section to terminate the call.</td>\n</tr>\n<tr>\n<td><em>script[].onTimeout</em></td>\n<td>Array</td>\n<td>Array of actions to execute when a machine is detected and the <code>endOfMessageDetectionTimeout</code> is reached. If you do not intend to continue the scenario after <code>onTimeout</code>, include a <code>Hangup</code> action at the end of this section to terminate the call.</td>\n</tr>\n<tr>\n<td><em>script[].onHumanDetected</em></td>\n<td>Array</td>\n<td>Array of actions to execute when a human is detected. Actions defined in <code>onDetecting</code> are interrupted before these actions begin. To avoid this interruption, omit this section and define the remaining scenario after this action. If you do not intend to continue the scenario after <code>onHumanDetected</code>, include a <code>Hangup</code> action at the end of this section to terminate the call.</td>\n</tr>\n<tr>\n<td><em>script[].options.loopCount</em></td>\n<td>Int</td>\n<td>Number of times the file will be played.</td>\n</tr>\n<tr>\n<td><em>script[].playFromUpload</em></td>\n<td>String</td>\n<td><strong>Required.</strong> ID of uploaded file. The parameter can be constructed using variables.</td>\n</tr>\n<tr>\n<td><em>script[].playTty</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Text that will be played in Baudot tones. The parameter can be constructed using variables.</td>\n</tr>\n<tr>\n<td>_script[].case._<em>default</em></td>\n<td>Array</td>\n<td>Array of actions to execute if none of the conditions above are met.</td>\n</tr>\n<tr>\n<td><em>lastUsageDate</em></td>\n<td>String</td>\n<td>Last usage date. <code>null</code> for scenarios that are used last time before <code>2024-01-01</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["voice","ivr","1","scenarios","{{id}}"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"45380041-2572-412b-9571-ed593ab407c4","name":"Update voice IVR scenario CALL API","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n  \"name\": \"Call API\",\n  \"description\": \"Perform a POST request to provided URL with headers and payload.\",\n  \"script\": [\n    {\n      \"request\": \"https://requestb.in/12345\",\n      \"options\": {\n        \"method\": \"POST\",\n        \"headers\": {\n          \"content-type\": \"application/json\"\n        },\n        \"body\": {\n          \"payload\": \"${to} finished the IVR.\"\n        }\n      }\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/voice/ivr/1/scenarios/{{id}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"398"},{"key":"Date","value":"Wed, 26 Apr 2023 05:02:12 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1682485333596074828"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": \"5734EF89BEC28D09B7DF26E298242E97\",\n    \"name\": \"Call API\",\n    \"description\": \"Perform a POST request to provided URL with headers and payload.\",\n    \"createTime\": \"2023-04-25T08:32:18.410+0000\",\n    \"updateTime\": \"2023-04-26T05:02:13.680+0000\",\n    \"script\": [\n        {\n            \"request\": \"https://requestb.in/12345\",\n            \"options\": {\n                \"method\": \"POST\",\n                \"headers\": {\n                    \"content-type\": \"application/json\"\n                },\n                \"body\": {\n                    \"payload\": \"${to} finished the IVR.\"\n                }\n            }\n        }\n    ]\n}"},{"id":"8af5f326-57a0-4c04-9b1a-e83d8bd98f42","name":"Update a Voice IVR Scenario","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n  \"name\": \"Call API\",\n  \"description\": \"Perform a POST request to provided URL with headers and payload.\",\n  \"script\": [\n    {\n      \"request\": \"https://requestb.in/12345\",\n      \"options\": {\n        \"method\": \"POST\",\n        \"headers\": {\n          \"content-type\": \"application/json\"\n        },\n        \"body\": {\n          \"payload\": \"${to} finished the IVR.\"\n        }\n      }\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/voice/ivr/1/scenarios/{{id}}"},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":null}],"_postman_id":"1e70bdd0-6446-4931-a556-6ec5e1c3d124"},{"name":"Launch outbound IVR","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","if (pm.environment.get(\"runVoiceCalls\") !== \"true\") { skip(\"runVoiceCalls is not \\\"true\\\" in the environment, so no call is placed\"); }","else if (!((pm.environment.get(\"testVoiceNumber\") || \"\").trim() || (pm.environment.get(\"testNumber\") || \"\").trim())) { skip(\"testVoiceNumber (or testNumber) is not set\"); }"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"bulkId\", \"messages\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","","pm.test(\"'messages' is an array\", function () {","    pm.expect(responseBody[\"messages\"]).to.be.an('array');","});"],"type":"text/javascript","packages":{}}}],"id":"2a317113-11fd-407f-8fef-68304b42e420","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"messages\": [\n    {\n      \"scenarioId\": \"{{id}}\",\n      \"from\": \"46700000000\",\n      \"destinations\": [\n        {\n          \"to\": \"46731234567\"\n        }\n      ],\n      \"callbackData\": \"DLR callback data\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/voice/ivr/1/messages","description":"<blockquote>\n<p><strong>This request places a real phone call</strong> to your <code>testNumber</code>. It runs only when the environment variable <code>runVoiceCalls</code> is <code>true</code>; otherwise it is skipped.</p>\n</blockquote>\n<blockquote>\n<p><strong>A call can be accepted and still not be placed.</strong> The API answers <code>200</code> with status <code>PENDING</code> when it accepts the request. The final result appears later in the logs and delivery reports. For example <code>REJECTED_DND</code> means the number is on a do-not-disturb list, so the call was never connected. Check <strong>Voice message logs</strong> (filter with <code>bulkId</code>) to see what happened to the call.</p>\n</blockquote>\n<p>This method allows you to start an outbound IVR toward a multiple destinations.</p>\n<p>Response format</p>\n<p>If successful, the response header HTTP status code will be <code>200 OK</code> and the IVR flow will be sent.</p>\n<p>If you try to send the request without authorization, you will receive a <code>401 Unauthorized</code> error.</p>\n<h2 id=\"voice-response\">Voice Response</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the request. Bulk ID will be received when a message is sent to more than one destination address.</td>\n</tr>\n<tr>\n<td><em>messages</em></td>\n<td>VoiceResponseDetails</td>\n<td>Array of sent message objects, one object per message.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"voice-response-details\">Voice Response Details</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>to</em></td>\n<td>String</td>\n<td>The message destination address.</td>\n</tr>\n<tr>\n<td><em>status</em></td>\n<td>Status</td>\n<td>Indicates whether the message has been sent successfully, not sent, delivered, not delivered, waiting for delivery, or other status.</td>\n</tr>\n<tr>\n<td><em>messageId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the sent message.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"status\">Status</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>groupId</em></td>\n<td>Int</td>\n<td>Status group ID</td>\n</tr>\n<tr>\n<td><em>groupName</em></td>\n<td>String</td>\n<td>Status group name</td>\n</tr>\n<tr>\n<td><em>id</em></td>\n<td>Int</td>\n<td>Status ID</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>Status name</td>\n</tr>\n<tr>\n<td><em>description</em></td>\n<td>String</td>\n<td>Human readable description of the status.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-request-fields\">Additional request fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>messages[].scenarioId</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Scenario key.</td>\n</tr>\n<tr>\n<td><em>messages[].from</em></td>\n<td>String</td>\n<td>Numeric sender ID length should be between 3 and 14 characters.</td>\n</tr>\n<tr>\n<td><em>messages[].notifyUrl</em></td>\n<td>String</td>\n<td>The URL on your callback server on which the Delivery report will be sent.</td>\n</tr>\n<tr>\n<td><em>messages[].notifyContentType</em></td>\n<td>String</td>\n<td>Preferred Delivery report content type. Can be <code>application/json</code> or <code>application/xml</code>.</td>\n</tr>\n<tr>\n<td><em>messages[].notifyContentVersion</em></td>\n<td>Int</td>\n<td>Specifies the version of the report model to be sent. Can be <code>1</code> (<a href=\"#programmable-communications/voice/receive-voice-delivery-reports-deprecated\">deprecated version 1</a>) or <code>2</code> (<a href=\"#programmable-communications/voice/receive-voice-delivery-reports\">current version 2</a>). The default is version 2.</td>\n</tr>\n<tr>\n<td><em>messages[].callbackData</em></td>\n<td>String</td>\n<td>Additional client's data that will be sent on the notifyUrl. The maximum value is 200 characters.</td>\n</tr>\n<tr>\n<td><em>messages[].validityPeriod</em></td>\n<td>Int</td>\n<td>The message validity period shown in minutes. When the period expires, it will not be allowed for the message to be sent. A validity period longer than 48h is not supported (in this case, it will be automatically set to 48h).</td>\n</tr>\n<tr>\n<td><em>messages[].sendAt</em></td>\n<td>String</td>\n<td>Used for scheduled Voice messages (message not to be sent immediately, but at scheduled time).</td>\n</tr>\n<tr>\n<td><em>messages[].retry</em></td>\n<td>Object</td>\n<td>Used to define if the delivery of the Voice messages should be retried in case the first try doesn't succeed. Additional retries will be made according to the schedule defined by <em>minPeriod</em> and <em>maxPeriod</em> parameters and platform's internal retry logic. If the <em>minPeriod</em> differs <em>maxPeriod</em>, delivery will be retried in the following manner: after 1 min, 2 min, 5 min, 10 min, 20 min, 30 min, 1 hour, 2 hours, 4 hours, 8 hours, 16 hours, 24 hours or until maxPeriod is reached. If the retry attempt for the <em>maxPeriod</em> is reached, the <em>maxPeriod</em> will be used for all subsequent retries. If the <em>minPeriod</em> and the <em>maxPeriod</em> are defined as equal values, the period of time between retries will be equal to this value. Message delivery will be retried until the successful delivery or message validity or <em>maxCount</em> value is reached.</td>\n</tr>\n<tr>\n<td><em>messages[].retry.maxCount</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Specify the maximum number of retry attempts. Maximum value of the maxCount is <code>4</code>. If the value is higher than <code>4</code>, it will be set to <code>4</code>.</td>\n</tr>\n<tr>\n<td><em>messages[].retry.maxPeriod</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Defines the maximum waiting time (in minutes) after the previous failed attempt to try to deliver the message again. Supported values are 1 min, 2 min, 5 min, 10 min, 20 min, 30 min, 1 hour, 2 hours, 4 hours, 8 hours, 16 hours, 24 hours. If entered a value that isn't from the previous list but that's smaller than 24 hours, it is used the next bigger value from the list. If entered value that is bigger than 24 hours than it is used 24 hours.</td>\n</tr>\n<tr>\n<td><em>messages[].retry.minPeriod</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Defines the minimal waiting time (in minutes) after the previous failed attempt to try to deliver the message again. Supported values are 1 min, 2 min, 5 min, 10 min, 20 min, 30 min, 1 hour, 2 hours, 4 hours, 8 hours, 16 hours, 24 hours. If entered a value that isn't from the previous list but that's smaller than 24 hours, it is used the next bigger value from the list. If entered value that is bigger than 24 hours than it is used 24 hours.</td>\n</tr>\n<tr>\n<td><em>messages[].ringTimeout</em></td>\n<td>Int</td>\n<td>Ringing duration, unless there are no operator limitations. Default value is <code>45</code>. Note: There are no limitations on the Voice platform regarding this value, however, most of the operators have their own ring timeout limitations and it is advisable to keep the ringTimeout value up to <code>45</code> seconds.</td>\n</tr>\n<tr>\n<td><em>messages[].sendingSpeed</em></td>\n<td>Object</td>\n<td>Sending rate defined in number of messages sent per second, minute, hour or day. You may wish to use this to allow your systems or agents to handle large amounts of incoming traffic. Not setting a send speed limit can overwhelm your resources with incoming traffic. If this parameter is defined, <em>validityPeriod</em> is ignored.</td>\n</tr>\n<tr>\n<td><em>messages[].sendingSpeed.speed</em></td>\n<td>Int</td>\n<td>Defines the number of messages that will be sent per specified time unit.</td>\n</tr>\n<tr>\n<td><em>messages[].sendingSpeed.timeUnit</em></td>\n<td>String</td>\n<td>Defines time unit used for calculating sending speed. Possible values: <code>second</code>, <code>minute</code>, <code>hour</code> and <code>day</code>.</td>\n</tr>\n<tr>\n<td><em>messages[].parameters</em></td>\n<td>Object</td>\n<td>The parameters that should be passed to the scenario on execution.</td>\n</tr>\n<tr>\n<td><em>messages[].pause</em></td>\n<td>Int</td>\n<td>Indicating period of time in seconds between end user answering the call and message starting to be played. Minimal value is <code>0</code> and maximum value is <code>10</code> seconds. Default value is <code>0</code>.</td>\n</tr>\n<tr>\n<td><em>messages[].deliveryTimeWindow</em></td>\n<td>Object</td>\n<td>Scheduling object that allows setting up detailed time windows in which the message can be sent. Consists of from, to and days properties. Days property is mandatory. From and to properties should be either both included, to allow finer time window granulation or both omitted, to include whole days in the delivery time window. Note: delivery time window is set in UTC timezone.</td>\n</tr>\n<tr>\n<td><em>messages[].deliveryTimeWindow.days</em></td>\n<td>Array</td>\n<td></td>\n</tr>\n<tr>\n<td><em>messages[].deliveryTimeWindow.from.hour</em></td>\n<td>Int</td>\n<td></td>\n</tr>\n<tr>\n<td><em>messages[].deliveryTimeWindow.from.minute</em></td>\n<td>Int</td>\n<td></td>\n</tr>\n<tr>\n<td><em>messages[].callTimeout</em></td>\n<td>Int</td>\n<td>Maximum possible duration of the call to be set, shown in seconds.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["voice","ivr","1","messages"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"73f42637-d52c-4d4b-978e-04314093f07e","name":"Launch outbound IVR","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"bulkId\": \"BULK-ID-123-xyz\",\n  \"messages\": [\n    {\n      \"scenarioId\": \"5484CAA003789D634478D4456B717B78\",\n      \"from\": \"46701234561\",\n      \"destinations\": [\n        {\n          \"to\": \"4670123456\"\n        },\n        {\n          \"to\": \"4670123457\"\n        }\n      ],\n      \"notifyUrl\": \"https://www.example.com/voice/advanced\",\n      \"notifyContentType\": \"application/json\",\n      \"callbackData\": \"DLR callback data\",\n      \"validityPeriod\": 720,\n      \"sendAt\": \"2023-05-25T08:50:25.320+0000\",\n      \"retry\": {\n        \"minPeriod\": 1,\n        \"maxPeriod\": 5,\n        \"maxCount\": 5\n      },\n      \"record\": false,\n      \"deliveryTimeWindow\": {\n        \"from\": {\n          \"hour\": 6,\n          \"minute\": 0\n        },\n        \"to\": {\n          \"hour\": 15,\n          \"minute\": 30\n        },\n        \"days\": [\n          \"MONDAY\",\n          \"TUESDAY\",\n          \"WEDNESDAY\",\n          \"THURSDAY\",\n          \"FRIDAY\",\n          \"SATURDAY\",\n          \"SUNDAY\"\n        ]\n      }\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/voice/ivr/1/messages"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"455"},{"key":"Date","value":"Tue, 23 May 2023 15:41:58 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684856518474106663"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"bulkId\": \"BULK-ID-123-xyz\",\n    \"messages\": [\n        {\n            \"to\": \"4670123456\",\n            \"status\": {\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 26,\n                \"name\": \"PENDING_ACCEPTED\",\n                \"description\": \"Message accepted, pending for delivery.\"\n            },\n            \"messageId\": \"8d769b89-8012-4c27-8c5f-f6e5afa8cb4a\"\n        },\n        {\n            \"to\": \"4670123457\",\n            \"status\": {\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 26,\n                \"name\": \"PENDING_ACCEPTED\",\n                \"description\": \"Message accepted, pending for delivery.\"\n            },\n            \"messageId\": \"ded3cb37-50bc-47b1-afef-4416ff38776e\"\n        }\n    ]\n}"}],"_postman_id":"2a317113-11fd-407f-8fef-68304b42e420"},{"name":"Delete a Voice IVR Scenario","event":[{"listen":"test","script":{"exec":["// Tests for Delete a Voice IVR Scenario.","pm.test(\"Status code is 200\", function () { pm.expect(pm.response.code).to.be.oneOf([200]); });","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","// A successful delete returns an empty body.","pm.test(\"Response body is empty or valid JSON\", function () {","    var text = pm.response.text();","    if (text && text.trim()) { pm.response.json(); }","});",""],"type":"text/javascript","packages":{}}}],"id":"565288d3-82a1-4f84-90d1-ef08a7cd57c7","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"DELETE","header":[],"url":"https://go2.vhdmedia.se/voice/ivr/1/scenarios/{{id}}","description":"<p>This method allows you to delete a Voice IVR Scenario.</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>id</em></td>\n<td>string</td>\n<td>Required.  <br />  <br />Scenario identifier.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["voice","ivr","1","scenarios","{{id}}"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"21854723-676a-43f9-8f70-e8e188b3692c","name":"Delete a Voice IVR Scenario","originalRequest":{"method":"DELETE","header":[],"url":"https://go2.vhdmedia.se/voice/ivr/1/scenarios/{{id}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"2"},{"key":"Date","value":"Thu, 27 Apr 2023 12:34:51 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1682598892208954663"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{}"}],"_postman_id":"565288d3-82a1-4f84-90d1-ef08a7cd57c7"},{"name":"Get uploaded IVR files","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"results\", \"paging\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","","pm.test(\"'results' is an array\", function () {","    pm.expect(responseBody[\"results\"]).to.be.an('array');","});"],"type":"text/javascript","packages":{}}}],"id":"bd35f6ca-6540-41cb-a9f3-a5429341691c","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/voice/ivr/1/uploads","description":"<p>Get files.</p>\n<p>Get files with pagination. Maximum number of pages is 100.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>page</em></td>\n<td>Int</td>\n<td>Results page to retrieve (0..N). Default: <code>0</code>.</td>\n</tr>\n<tr>\n<td><em>size</em></td>\n<td>Int</td>\n<td>Number of records per page. Default: <code>20</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results</em></td>\n<td>Array</td>\n<td>The list of the results for this page.</td>\n</tr>\n<tr>\n<td><em>results[].id</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Unique identifier of a route.</td>\n</tr>\n<tr>\n<td><em>results[].name</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Route name.</td>\n</tr>\n<tr>\n<td><em>results[].criteria</em></td>\n<td>Array</td>\n<td>List of criteria that should match route. For a route to match, any criterion should be met.</td>\n</tr>\n<tr>\n<td><em>results[].criteria[].to</em></td>\n<td>String</td>\n<td>Phone number or regular expression pattern representing the phone number. Applies to all search criteria types except <code>WEBRTC</code>. Examples: <code>41793026727</code>, <code>41793(.+)</code>.</td>\n</tr>\n<tr>\n<td><em>results[].criteria[].value</em></td>\n<td>Object</td>\n<td>Criteria type.</td>\n</tr>\n<tr>\n<td><em>results[].criteria[].value.type</em></td>\n<td>String</td>\n<td><strong>Required.</strong> One of: <code>PHONE</code>, <code>SIP</code>, <code>WEBRTC</code>, <code>APPLICATION</code>, <code>WHATSAPP</code>.</td>\n</tr>\n<tr>\n<td><em>results[].destinations</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> List of destinations. First destination in the list is the first one to be executed. Subsequent destinations are executed only if the previous one fails.</td>\n</tr>\n<tr>\n<td><em>results[].destinations[].priority</em></td>\n<td>Int</td>\n<td></td>\n</tr>\n<tr>\n<td><em>results[].destinations[].type</em></td>\n<td>String</td>\n<td><strong>Required.</strong> One of: <code>APPLICATION</code>, <code>ENDPOINT</code>, <code>URL</code>.</td>\n</tr>\n<tr>\n<td><em>results[].destinations[].weight</em></td>\n<td>Int</td>\n<td></td>\n</tr>\n<tr>\n<td><em>results[].status</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Indicates whether the route is enabled or not. One of: <code>ENABLED</code>, <code>DISABLED</code>.</td>\n</tr>\n<tr>\n<td><em>results[].order</em></td>\n<td>Int</td>\n<td>Indicates priority index of the route. Routes with lower priority index are executed first.</td>\n</tr>\n<tr>\n<td><em>results[].transferOnly</em></td>\n<td>Boolean</td>\n<td>Indicates whether this route should be used exclusively for call transfers initiated via the REFER SIP message. The <code>to</code> number value will be taken from the <code>Refer-To</code> header.</td>\n</tr>\n<tr>\n<td><em>paging</em></td>\n<td>Object</td>\n<td>Contains information about the page.</td>\n</tr>\n<tr>\n<td><em>paging.page</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Requested page number.</td>\n</tr>\n<tr>\n<td><em>paging.size</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Requested page size.</td>\n</tr>\n<tr>\n<td><em>paging.totalPages</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> The total number of pages of the results matching the requested parameters.</td>\n</tr>\n<tr>\n<td><em>paging.totalResults</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> The total number of the results matching the requested parameters.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["voice","ivr","1","uploads"],"host":["go2","vhdmedia","se"],"query":[{"disabled":true,"description":{"content":"<p>Results page to retrieve (0..N). Default: <code>0</code>.</p>\n","type":"text/plain"},"key":"page","value":""},{"disabled":true,"description":{"content":"<p>Number of records per page. Default: <code>20</code>.</p>\n","type":"text/plain"},"key":"size","value":""}],"variable":[]}},"response":[{"id":"f5f8f4c6-b23c-4215-88d2-06769e3ec3fd","name":"200 - Route response page example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/voice/ivr/1/uploads","protocol":"https","host":["go2","vhdmedia","se"],"path":["voice","ivr","1","uploads"],"query":[{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"results\": [\n    {\n      \"id\": \"f8fc8aca-786d-4943-9af2-e7ec01b5e80d\",\n      \"name\": \"SIP endpoint route\",\n      \"destinations\": [\n        {\n          \"value\": {\n            \"username\": \"41793026834\",\n            \"sipTrunkId\": \"string\",\n            \"customHeaders\": {\n              \"string\": \"string\"\n            },\n            \"type\": \"SIP\"\n          },\n          \"connectTimeout\": 30,\n          \"recording\": {\n            \"recordingType\": \"AUDIO\",\n            \"recordingComposition\": {\n              \"enabled\": true\n            },\n            \"customData\": {\n              \"string\": \"string\"\n            },\n            \"filePrefix\": \"string\"\n          },\n          \"type\": \"ENDPOINT\"\n        }\n      ],\n      \"transferOnly\": false\n    },\n    {\n      \"id\": \"f8fc8aca-786d-4943-9af2-e7ec01b5e80d\",\n      \"name\": \"Phone endpoint route\",\n      \"destinations\": [\n        {\n          \"value\": {\n            \"phoneNumber\": \"41793026834\",\n            \"type\": \"PHONE\"\n          },\n          \"connectTimeout\": 30,\n          \"recording\": {\n            \"recordingType\": \"AUDIO\",\n            \"recordingComposition\": {\n              \"enabled\": true\n            },\n            \"customData\": {\n              \"string\": \"string\"\n            },\n            \"filePrefix\": \"string\"\n          },\n          \"type\": \"ENDPOINT\"\n        }\n      ],\n      \"transferOnly\": false\n    }\n  ],\n  \"paging\": {\n    \"page\": 0,\n    \"size\": 20,\n    \"totalPages\": 1,\n    \"totalResults\": 2\n  }\n}"},{"id":"1574646b-4e94-4f67-8090-c062c378e60e","name":"400 - Error responses","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/voice/ivr/1/uploads","protocol":"https","host":["go2","vhdmedia","se"],"path":["voice","ivr","1","uploads"],"query":[{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"BAD_REQUEST\",\n      \"text\": \"Bad request\",\n      \"validationErrors\": {\n        \"field\": [\n          \"field must not be null\"\n        ]\n      }\n    }\n  }\n}"},{"id":"b0dc4baf-f48b-437d-9134-c7028d731485","name":"401 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/voice/ivr/1/uploads","protocol":"https","host":["go2","vhdmedia","se"],"path":["voice","ivr","1","uploads"],"query":[{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"de402e89-c59a-4fe5-870d-3d4df5012f3f","name":"403 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/voice/ivr/1/uploads","protocol":"https","host":["go2","vhdmedia","se"],"path":["voice","ivr","1","uploads"],"query":[{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"cd106cc2-7f2d-4072-a49f-f026da3c25e7","name":"429 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/voice/ivr/1/uploads","protocol":"https","host":["go2","vhdmedia","se"],"path":["voice","ivr","1","uploads"],"query":[{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"1637fded-db44-48f0-8074-188f0dba6bab","name":"500 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/voice/ivr/1/uploads","protocol":"https","host":["go2","vhdmedia","se"],"path":["voice","ivr","1","uploads"],"query":[{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"bd35f6ca-6540-41cb-a9f3-a5429341691c"},{"name":"Upload IVR file","event":[{"listen":"prerequest","script":{"exec":["// Choose an audio file in the \"file\" field of the Body tab. Without a file the request is skipped.","var f = pm.request.body && pm.request.body.formdata ? pm.request.body.formdata.one(\"file\") : null;","var hasFile = !!(f && f.src && (Array.isArray(f.src) ? f.src.length > 0 : String(f.src).length > 0));","if (!hasFile) {","    console.warn(\"No file selected in the Body tab - request not sent.\");","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/no-file-selected\"); }","}"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","pm.test(\"Response body is valid JSON\", function () { pm.response.json(); });"],"type":"text/javascript","packages":{}}}],"id":"567265de-75fd-4c96-8d72-2f98725edec8","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[{"key":"Accept","value":"application/json"}],"body":{"mode":"formdata","formdata":[{"key":"file","type":"file","src":[]}]},"url":"https://go2.vhdmedia.se/voice/ivr/1/uploads","description":"<p>Upload file.</p>\n<p>Upload an audio file to be played in IVR calls. The file will be removed if it is not used for 90 days. Supported formats: <code>.wav</code> and <code>.mp3</code>.</p>\n<h3 id=\"request-body\">Request body</h3>\n<p>Send the file as <code>multipart/form-data</code> with the file in the <code>file</code> field. JSON is not accepted (<code>415 Unsupported Media Type</code>).</p>\n<h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code> with details of the uploaded file.</p>\n<p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["voice","ivr","1","uploads"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[],"_postman_id":"567265de-75fd-4c96-8d72-2f98725edec8"},{"name":"Search Voice IVR Recorded Files","event":[{"listen":"test","script":{"exec":["// Tests for this request (no success example is documented, so only the basics are checked).","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","pm.test(\"Response body is valid JSON\", function () {","    pm.response.json();","});"],"type":"text/javascript","packages":{}}}],"id":"e9d6c64a-4ec6-4e94-a369-c54f0b02d7e0","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[],"url":"https://go2.vhdmedia.se/voice/ivr/1/files","description":"<h3 id=\"additional-parameters\">Additional parameters</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>page</em></td>\n<td>Int</td>\n<td>Page number you want to see.</td>\n</tr>\n<tr>\n<td><em>pageSize</em></td>\n<td>Int</td>\n<td>Size of the page you want to see.</td>\n</tr>\n<tr>\n<td><em>messageId</em></td>\n<td>String</td>\n<td>The message ID to search by.</td>\n</tr>\n<tr>\n<td><em>number</em></td>\n<td>String</td>\n<td>The called phone number to search by.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-response-fields\">Additional response fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>files</em></td>\n<td>Array</td>\n<td>Array of recorded files metadata, one for each recorded file.</td>\n</tr>\n<tr>\n<td><em>files[].messageId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the sent message.</td>\n</tr>\n<tr>\n<td><em>files[].from</em></td>\n<td>String</td>\n<td>Numeric sender ID.</td>\n</tr>\n<tr>\n<td><em>files[].to</em></td>\n<td>String</td>\n<td>Destination address.</td>\n</tr>\n<tr>\n<td><em>files[].scenarioId</em></td>\n<td>String</td>\n<td>Scenario key.</td>\n</tr>\n<tr>\n<td><em>files[].groupId</em></td>\n<td>String</td>\n<td>Differentiates recordings made by separate Record actions.</td>\n</tr>\n<tr>\n<td><em>files[].url</em></td>\n<td>String</td>\n<td>Relative URL path to the recorded file. To download the audio, just perform a GET request using the relative URL of a specific file. The returned audio data is encoded as PCM 16bit 8kHz WAVE audio. The files are available on VHD servers for 2 months.</td>\n</tr>\n<tr>\n<td><em>files[].recordedAt</em></td>\n<td>String</td>\n<td>The time the recording took place.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["voice","ivr","1","files"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[],"_postman_id":"e9d6c64a-4ec6-4e94-a369-c54f0b02d7e0"},{"name":"Download  Voice IVR Recorded File","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","if (!(pm.environment.get(\"ivrFileId\") || \"\")) { skip(\"ivrFileId is not set (the ID of a recorded IVR file)\"); }"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests for this request (no success example is documented, so only the basics are checked).","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});"],"type":"text/javascript","packages":{}}}],"id":"38b895fb-ce60-49b3-b335-b4028a2b7f82","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[],"url":"https://go2.vhdmedia.se/voice/ivr/1/files/{{ivrFileId}}","description":"<blockquote>\n<p>This request needs the ID of a recorded file in the environment variable <code>ivrFileId</code> (take it from <strong>Search Voice IVR Recorded Files</strong>). It is skipped when that variable is empty.</p>\n</blockquote>\n<p>This method allows you to download Voice IVR Recorded Audio File. The returned audio data is encoded as PCM 16bit 8kHz WAVE audio. The files are available on VHD servers for 2 months</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>id</em></td>\n<td>string</td>\n<td>Required.  <br />  <br />Scenario identifier.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["voice","ivr","1","files","{{ivrFileId}}"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[],"_postman_id":"38b895fb-ce60-49b3-b335-b4028a2b7f82"}],"id":"7466e60b-d1d2-48bc-b395-7406e17c461f","description":"<p>The IVR API enables the creation of inbound and outbound interactive call scenarios. For inbound calls, once your scenario is created you will need to link this scenario to the phone number you are renting.</p>\n<p>IVR scenarios can use the Record action to record a portion of the call. These recordings can be retrieved using the <em>Search Voice IVR Recorded Files</em> and <em>Download Voice IVR Recorded File</em>. Alternatively, IVR recorded audio can also be found using the Search Recording method.</p>\n<p>Our IVR solution is available in two flavours – inbound and outbound. IVR allows a great deal of flexibility and enables clients to create numerous scenarios:</p>\n<p>Outbound IVR:</p>\n<ul>\n<li>Multiple questions and answers required for creating:<ul>\n<li>Code verification and a subsequent action depending on the results</li>\n<li>Surveys with the recording of end users' opinion</li>\n</ul>\n</li>\n<li>Collecting DTMF/response codes from the end user and sending it to client’s API</li>\n</ul>\n<p>Inbound IVR:</p>\n<ul>\n<li>Surveys done via DTMF</li>\n<li>Surveys recording customer opinions</li>\n<li>Polls</li>\n<li>Automation of processes like appointment bookings, appointment confirmations, and package tracking</li>\n</ul>\n<h2 id=\"manage-ivr-scenarios\">Manage IVR Scenarios</h2>\n<p>POST <a href=\"https://dev.vhdmedia.se/#2e0981e8-86ae-44f3-8b95-4f21c0843d04\">Create a Voice IVR Scenario</a></p>\n<p>This method allows you to create a Voice IVR Scenario.</p>\n<p>GET <a href=\"https://dev.vhdmedia.se/#b1e4e23b-8544-4ccb-9dae-c6d83fc11b59\">Search Voice IVR Scenarios</a></p>\n<p>This method allows you to search Voice IVR Scenarios by name. To get a list of all IVR Scenarios, make a request without any parameters.</p>\n<p>GET <a href=\"https://dev.vhdmedia.se/#a67bf4d1-6639-494b-b1be-cb46f7eafa3f\">Get a Voice IVR Scenario</a></p>\n<p>This method allows you to get a Voice IVR Scenario.</p>\n<p>PUT <a href=\"https://dev.vhdmedia.se/#56aa97b7-eec0-405c-a97e-c90ab0bcbe77\">Update a Voice IVR Scenario</a></p>\n<p>This method allows you to update a Voice IVR Scenario.</p>\n<p>DEL <a href=\"https://dev.vhdmedia.se/#c703114a-57e9-4d64-8442-de88e6cb1ac9\">Delete a Voice IVR Scenario</a></p>\n<p>This method allows you to delete a Voice IVR Scenario.</p>\n<p>POST <a href=\"https://dev.vhdmedia.se/#37d6ac22-43e1-41d1-97d4-32a0e5cb6c2f\">Launch IVR Scenario</a></p>\n<p>This method allows you to start an outbound IVR toward a multiple destinations.</p>\n<h2 id=\"retrieve-recorded-files\">Retrieve Recorded Files</h2>\n<p>GET <a href=\"https://dev.vhdmedia.se/#63006082-b16e-4a36-9c5a-32d07b5683ef\">Search Voice IVR Recorded Files</a></p>\n<p>This method allows you to search Voice IVR Recorded Audio Files.</p>\n<p>GET <a href=\"https://dev.vhdmedia.se/#3986fd4a-85b7-4f00-ab05-57de06033b77\">Download Voice IVR Recorded File</a></p>\n<p>This method allows you to download Voice IVR Recorded Audio File. The returned audio data is encoded as PCM 16bit 8kHz WAVE audio. The files are available on VHD servers for 2 months.</p>\n","_postman_id":"7466e60b-d1d2-48bc-b395-7406e17c461f"},{"name":"CALLS API","item":[{"name":"1 Calls configurations","item":[{"name":"Create calls configuration","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","(function () {","    api(\"GET\", \"/calls/1/configurations\", null, function (e, r) {","        var list = ((jsonOf(r) || {}).results || []).filter(function (c) { return c.name === \"Sample calls configuration\"; });","        (function next(i) { if (i >= list.length) { return; } api(\"DELETE\", \"/calls/1/configurations/\" + list[i].id, null, function () { next(i + 1); }); })(0);","    });","})();"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 201\", function () {","    pm.expect(pm.response.code).to.be.oneOf([201]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"id\", \"name\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","","pm.environment.set(\"callsConfigurationId\", pm.response.json().id);"],"type":"text/javascript","packages":{}}}],"id":"e8129195-e418-4b18-8756-b822d206180a","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Sample calls configuration\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/calls/1/configurations","description":"<p>Create calls configuration.</p>\n<p>Create calls configuration.</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>id</em></td>\n<td>String</td>\n<td>Calls configuration ID. If not provided, system will generate random ID, which will be returned in response.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>Calls configuration name.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>201 Created</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>id</em></td>\n<td>String</td>\n<td>Calls configuration ID.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>Calls configuration name.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["calls","1","configurations"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"38967a98-e5ef-40b2-a115-5c3449679020","name":"201 - Response example","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"id\": \"63467c6e2885a5389ba11d80\",\n  \"name\": \"Calls configuration\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/calls/1/configurations"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": \"63467c6e2885a5389ba11d80\",\n  \"name\": \"Calls configuration\"\n}"},{"id":"e28b40ef-aeba-4c82-8917-3426dd11dded","name":"400 - Error responses","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"id\": \"63467c6e2885a5389ba11d80\",\n  \"name\": \"Calls configuration\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/calls/1/configurations"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"BAD_REQUEST\",\n      \"text\": \"Request is invalid.\"\n    }\n  }\n}"},{"id":"62a32091-e9ae-4bbe-acfd-fad9440dd5fa","name":"401 - Example","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"id\": \"63467c6e2885a5389ba11d80\",\n  \"name\": \"Calls configuration\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/calls/1/configurations"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"bd723d09-ff17-404b-bb5e-b6a0ea2c1a4f","name":"403 - Example","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"id\": \"63467c6e2885a5389ba11d80\",\n  \"name\": \"Calls configuration\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/calls/1/configurations"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"80097034-f955-458e-b521-15a90f47f8f8","name":"429 - Example","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"id\": \"63467c6e2885a5389ba11d80\",\n  \"name\": \"Calls configuration\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/calls/1/configurations"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"4d92aa98-4ddb-4250-9b76-714a56405177","name":"500 - Example","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"id\": \"63467c6e2885a5389ba11d80\",\n  \"name\": \"Calls configuration\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/calls/1/configurations"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"e8129195-e418-4b18-8756-b822d206180a"},{"name":"Get calls configurations","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"results\", \"paging\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","","pm.test(\"'results' is an array\", function () {","    pm.expect(responseBody[\"results\"]).to.be.an('array');","});"],"type":"text/javascript","packages":{}}}],"id":"d4431fe3-e67a-4023-86c2-f36500e8d610","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/calls/1/configurations","description":"<p>Get calls configurations.</p>\n<p>Get calls configurations.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>page</em></td>\n<td>Int</td>\n<td>Results page to retrieve (0..N). Default: <code>0</code>.</td>\n</tr>\n<tr>\n<td><em>size</em></td>\n<td>Int</td>\n<td>Number of records per page. Default: <code>20</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results</em></td>\n<td>Array</td>\n<td>The list of the results for this page.</td>\n</tr>\n<tr>\n<td><em>results[].id</em></td>\n<td>String</td>\n<td>Calls configuration ID.</td>\n</tr>\n<tr>\n<td><em>results[].name</em></td>\n<td>String</td>\n<td>Calls configuration name.</td>\n</tr>\n<tr>\n<td><em>paging</em></td>\n<td>Object</td>\n<td>Contains information about the page.</td>\n</tr>\n<tr>\n<td><em>paging.page</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Requested page number.</td>\n</tr>\n<tr>\n<td><em>paging.size</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Requested page size.</td>\n</tr>\n<tr>\n<td><em>paging.totalPages</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> The total number of pages of the results matching the requested parameters.</td>\n</tr>\n<tr>\n<td><em>paging.totalResults</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> The total number of the results matching the requested parameters.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["calls","1","configurations"],"host":["go2","vhdmedia","se"],"query":[{"disabled":true,"description":{"content":"<p>Results page to retrieve (0..N). Default: <code>0</code>.</p>\n","type":"text/plain"},"key":"page","value":""},{"disabled":true,"description":{"content":"<p>Number of records per page. Default: <code>20</code>.</p>\n","type":"text/plain"},"key":"size","value":""}],"variable":[]}},"response":[{"id":"3589e239-fc68-45e6-a029-e191ec1e7397","name":"200 - List of calls configurations","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/configurations","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","configurations"],"query":[{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"results\": [\n    {\n      \"id\": \"63467c6e2885a5389ba11d80\",\n      \"name\": \"Calls configuration\"\n    }\n  ],\n  \"paging\": {\n    \"page\": 0,\n    \"size\": 1,\n    \"totalPages\": 1,\n    \"totalResults\": 1\n  }\n}"},{"id":"630acfbd-a511-4a72-9119-ee854054d727","name":"400 - Error responses","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/configurations","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","configurations"],"query":[{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"BAD_REQUEST\",\n      \"text\": \"Request is invalid.\"\n    }\n  }\n}"},{"id":"bac1e74b-32dd-481a-a520-3e4488524df0","name":"401 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/configurations","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","configurations"],"query":[{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"d602f441-b746-4e08-a202-662f73e9c807","name":"403 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/configurations","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","configurations"],"query":[{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"c7eae601-7f35-4811-82c5-8fcceddb092d","name":"429 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/configurations","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","configurations"],"query":[{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"15fd66d2-7987-4c69-91fc-bde67d794efb","name":"500 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/configurations","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","configurations"],"query":[{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"d4431fe3-e67a-4023-86c2-f36500e8d610"},{"name":"Get calls configuration","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","if (!(pm.environment.get(\"callsConfigurationId\") || \"\")) { skip(\"callsConfigurationId is not set (an earlier request did not create it)\"); }"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"id\", \"name\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});"],"type":"text/javascript","packages":{}}}],"id":"2063f33f-cd6f-455d-8e38-4cc7f97f84fe","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/calls/1/configurations/{{callsConfigurationId}}","description":"<p>Get calls configuration.</p>\n<p>Get a single calls configuration.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>callsConfigurationId</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Calls configuration ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>id</em></td>\n<td>String</td>\n<td>Calls configuration ID.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>Calls configuration name.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["calls","1","configurations","{{callsConfigurationId}}"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"eddf4f93-8db0-49ec-9b7d-1bd9badf308f","name":"200 - Response example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/calls/1/configurations/{{callsConfigurationId}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": \"63467c6e2885a5389ba11d80\",\n  \"name\": \"Calls configuration\"\n}"},{"id":"5634548a-ca52-4e2a-8e6c-879e63273fca","name":"401 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/calls/1/configurations/{{callsConfigurationId}}"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"6285361b-fa96-4fa4-9878-fffe2331ab84","name":"403 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/calls/1/configurations/{{callsConfigurationId}}"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"bca8061c-95a9-4da4-852b-189902baccd7","name":"404 - Error responses","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/calls/1/configurations/{{callsConfigurationId}}"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"NOT_FOUND\",\n      \"text\": \"Resource was not found.\"\n    }\n  }\n}"},{"id":"228f4093-593b-488b-9589-fed4c798a94a","name":"429 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/calls/1/configurations/{{callsConfigurationId}}"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"0db65caf-862f-49f9-b702-7ad16bb16042","name":"500 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/calls/1/configurations/{{callsConfigurationId}}"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"2063f33f-cd6f-455d-8e38-4cc7f97f84fe"},{"name":"Update calls configuration","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","if (!(pm.environment.get(\"callsConfigurationId\") || \"\")) { skip(\"callsConfigurationId is not set (an earlier request did not create it)\"); }"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"id\", \"name\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});"],"type":"text/javascript","packages":{}}}],"id":"10d27585-dfa7-42ed-a52c-4ef314d7055c","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Sample calls configuration (updated)\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/calls/1/configurations/{{callsConfigurationId}}","description":"<p>Update calls configuration.</p>\n<p>Update calls configuration.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>callsConfigurationId</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Calls configuration ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>Calls configuration name.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>id</em></td>\n<td>String</td>\n<td>Calls configuration ID.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>Calls configuration name.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["calls","1","configurations","{{callsConfigurationId}}"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"badcb930-2c46-4461-b8e9-771b13d37abf","name":"200 - Update response example","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Calls configuration\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/calls/1/configurations/{{callsConfigurationId}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": \"63467c6e2885a5389ba11d80\",\n  \"name\": \"Calls configuration\"\n}"},{"id":"38383455-2047-46c6-8dc5-ffaf20cd41e8","name":"400 - Example","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Calls configuration\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/calls/1/configurations/{{callsConfigurationId}}"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"BAD_REQUEST\",\n      \"text\": \"Bad request\"\n    }\n  }\n}"},{"id":"7c882a38-2ef4-4457-86da-491741c7fb83","name":"401 - Example","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Calls configuration\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/calls/1/configurations/{{callsConfigurationId}}"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"2c98f3ff-2e68-43d8-ab29-32f744a8b136","name":"403 - Example","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Calls configuration\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/calls/1/configurations/{{callsConfigurationId}}"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"663d7c40-7417-4684-b310-8302c2bbbe5d","name":"404 - Error responses","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Calls configuration\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/calls/1/configurations/{{callsConfigurationId}}"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"NOT_FOUND\",\n      \"text\": \"Resource was not found.\"\n    }\n  }\n}"},{"id":"5b70e072-f8f1-49ae-a26c-93b1af56976a","name":"429 - Example","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Calls configuration\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/calls/1/configurations/{{callsConfigurationId}}"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"cf1f3658-acf3-4ca4-99e3-4afe2e29ea20","name":"500 - Example","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Calls configuration\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/calls/1/configurations/{{callsConfigurationId}}"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"10d27585-dfa7-42ed-a52c-4ef314d7055c"}],"id":"0cd46a40-1540-478d-a315-be15eabffa1b","description":"<p>A calls configuration is the setup that calls are placed under. Create one first.</p>\n","_postman_id":"0cd46a40-1540-478d-a315-be15eabffa1b"},{"name":"2 Calls","item":[{"name":"Get calls","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});"],"type":"text/javascript","packages":{}}}],"id":"5474c816-7057-49c9-b845-ee01e5de693b","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/calls/1/calls","description":"<p>Get calls.</p>\n<p>Get calls with pagination.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>type</em></td>\n<td>String</td>\n<td>Call endpoint type. One of: <code>PHONE</code>, <code>SIP</code>, <code>WEBRTC</code>, <code>VIBER</code>, <code>WHATSAPP</code>, <code>WEBSOCKET</code>.</td>\n</tr>\n<tr>\n<td><em>callsConfigurationId</em></td>\n<td>String</td>\n<td>Calls Configuration ID.</td>\n</tr>\n<tr>\n<td><em>applicationId</em></td>\n<td>String</td>\n<td>Application ID.</td>\n</tr>\n<tr>\n<td><em>from</em></td>\n<td>String</td>\n<td>Caller identifier.</td>\n</tr>\n<tr>\n<td><em>to</em></td>\n<td>String</td>\n<td>Callee identifier.</td>\n</tr>\n<tr>\n<td><em>direction</em></td>\n<td>String</td>\n<td>Call direction. One of: <code>INBOUND</code>, <code>OUTBOUND</code>.</td>\n</tr>\n<tr>\n<td><em>status</em></td>\n<td>String</td>\n<td>Call state. One of: <code>CALLING</code>, <code>RINGING</code>, <code>PRE_ESTABLISHED</code>, <code>ESTABLISHED</code>, <code>FINISHED</code>, <code>FAILED</code>, <code>CANCELLED</code>, <code>NO_ANSWER</code>, <code>BUSY</code>.</td>\n</tr>\n<tr>\n<td><em>startTimeAfter</em></td>\n<td>String</td>\n<td>Date and time for when the call has been created. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ</code>.</td>\n</tr>\n<tr>\n<td><em>conferenceId</em></td>\n<td>String</td>\n<td>Conference ID.</td>\n</tr>\n<tr>\n<td><em>dialogId</em></td>\n<td>String</td>\n<td>Dialog ID.</td>\n</tr>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>Bulk ID.</td>\n</tr>\n<tr>\n<td><em>page</em></td>\n<td>Int</td>\n<td>Results page to retrieve (0..N). Default: <code>0</code>.</td>\n</tr>\n<tr>\n<td><em>size</em></td>\n<td>Int</td>\n<td>Number of records per page. Default: <code>20</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results</em></td>\n<td>Array</td>\n<td>The list of the results for this page.</td>\n</tr>\n<tr>\n<td><em>results[].id</em></td>\n<td>String</td>\n<td>Unique call ID.</td>\n</tr>\n<tr>\n<td><em>results[].endpoint</em></td>\n<td>Object</td>\n<td><strong>Required.</strong> Call endpoint. Represents a caller for the inbound calls and a callee for the outbound calls.</td>\n</tr>\n<tr>\n<td><em>results[].endpoint.type</em></td>\n<td>String</td>\n<td>One of: <code>PHONE</code>, <code>SIP</code>, <code>WEBRTC</code>, <code>VIBER</code>, <code>WHATSAPP</code>, <code>WEBSOCKET</code>.</td>\n</tr>\n<tr>\n<td><em>results[].from</em></td>\n<td>String</td>\n<td>Caller ID.</td>\n</tr>\n<tr>\n<td><em>results[].to</em></td>\n<td>String</td>\n<td>Callee ID.</td>\n</tr>\n<tr>\n<td><em>results[].direction</em></td>\n<td>String</td>\n<td>Call direction. One of: <code>INBOUND</code>, <code>OUTBOUND</code>.</td>\n</tr>\n<tr>\n<td><em>results[].state</em></td>\n<td>String</td>\n<td>Call state. One of: <code>CALLING</code>, <code>RINGING</code>, <code>PRE_ESTABLISHED</code>, <code>ESTABLISHED</code>, <code>FINISHED</code>, <code>FAILED</code>, <code>CANCELLED</code>, <code>NO_ANSWER</code>, <code>BUSY</code>.</td>\n</tr>\n<tr>\n<td><em>results[].media</em></td>\n<td>Object</td>\n<td></td>\n</tr>\n<tr>\n<td><em>results[].media.audio</em></td>\n<td>Object</td>\n<td>Audio media properties.</td>\n</tr>\n<tr>\n<td><em>results[].media.audio.muted</em></td>\n<td>Boolean</td>\n<td>Indicates whether the end user can speak.</td>\n</tr>\n<tr>\n<td><em>results[].media.audio.userMuted</em></td>\n<td>Boolean</td>\n<td>Indicates whether the end user muted himself.</td>\n</tr>\n<tr>\n<td><em>results[].media.audio.deaf</em></td>\n<td>Boolean</td>\n<td>Indicates whether the end user can hear.</td>\n</tr>\n<tr>\n<td><em>results[].media.video</em></td>\n<td>Object</td>\n<td>Video media properties.</td>\n</tr>\n<tr>\n<td><em>results[].media.video.camera</em></td>\n<td>Boolean</td>\n<td>Indicates whether there is a video feed.</td>\n</tr>\n<tr>\n<td><em>results[].media.video.screenShare</em></td>\n<td>Boolean</td>\n<td>Indicates whether the end user is sharing their screen.</td>\n</tr>\n<tr>\n<td><em>results[].media.video.blind</em></td>\n<td>Boolean</td>\n<td>Indicates whether the end user can receive remote videos.</td>\n</tr>\n<tr>\n<td><em>results[].startTime</em></td>\n<td>String</td>\n<td>Date and time for when the call has been created.</td>\n</tr>\n<tr>\n<td><em>results[].answerTime</em></td>\n<td>String</td>\n<td>Date and time for when the call has been answered.</td>\n</tr>\n<tr>\n<td><em>results[].endTime</em></td>\n<td>String</td>\n<td>Date and time for when the call has been finished.</td>\n</tr>\n<tr>\n<td><em>results[].parentCallId</em></td>\n<td>String</td>\n<td>Parent call ID.</td>\n</tr>\n<tr>\n<td><em>results[].machineDetection</em></td>\n<td>Object</td>\n<td>Properties of the events that provide Answering Machine Detection result.</td>\n</tr>\n<tr>\n<td><em>results[].machineDetection.detectionResult</em></td>\n<td>String</td>\n<td>Detected class during analysis of the call. Always returns either HUMAN or MACHINE. Use confidenceRating for a finer grained analysis result One of: <code>HUMAN</code>, <code>MACHINE</code>.</td>\n</tr>\n<tr>\n<td><em>results[].machineDetection.confidenceRating</em></td>\n<td>Object</td>\n<td>A map representing the confidence rating for each detection class. The key is a tag indicating the detection class, and the value is a float between <code>0.0</code> and <code>1.0</code> representing the confidence rating. Possible classes are: <code>HUMAN</code>, <code>MACHINE</code>, <code>MUSIC</code>, <code>RINGING</code>, <code>NOISE</code>, <code>SILENCE</code> and <code>OTHER</code>. Each class confidence rating is independent from the other, thereby the sum of all confidence values may not equal 1.0.</td>\n</tr>\n<tr>\n<td><em>results[].machineDetection.customData</em></td>\n<td>Object</td>\n<td>Custom data.</td>\n</tr>\n<tr>\n<td><em>results[].ringDuration</em></td>\n<td>Int</td>\n<td>Ringing duration in seconds.</td>\n</tr>\n<tr>\n<td><em>results[].callsConfigurationId</em></td>\n<td>String</td>\n<td>Current calls configuration ID.</td>\n</tr>\n<tr>\n<td><em>results[].platform</em></td>\n<td>Object</td>\n<td>Platform options. For more details, see documentation.</td>\n</tr>\n<tr>\n<td><em>results[].platform.entityId</em></td>\n<td>String</td>\n<td>Required to use entity in a send request for outbound traffic. Returned in notification events. For more details, see documentation.</td>\n</tr>\n<tr>\n<td><em>results[].platform.applicationId</em></td>\n<td>String</td>\n<td>Required for application use in a send request for outbound traffic. Returned in notification events. For more details, see documentation.</td>\n</tr>\n<tr>\n<td><em>results[].conferenceId</em></td>\n<td>String</td>\n<td>Current conference ID.</td>\n</tr>\n<tr>\n<td><em>results[].customData</em></td>\n<td>Object</td>\n<td>Custom data.</td>\n</tr>\n<tr>\n<td><em>results[].dialogId</em></td>\n<td>String</td>\n<td>Dialog ID.</td>\n</tr>\n<tr>\n<td><em>results[].externalId</em></td>\n<td>String</td>\n<td>Client defined call ID.</td>\n</tr>\n<tr>\n<td><em>paging</em></td>\n<td>Object</td>\n<td>Contains information about the page.</td>\n</tr>\n<tr>\n<td><em>paging.page</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Requested page number.</td>\n</tr>\n<tr>\n<td><em>paging.size</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Requested page size.</td>\n</tr>\n<tr>\n<td><em>paging.totalPages</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> The total number of pages of the results matching the requested parameters.</td>\n</tr>\n<tr>\n<td><em>paging.totalResults</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> The total number of the results matching the requested parameters.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["calls","1","calls"],"host":["go2","vhdmedia","se"],"query":[{"disabled":true,"description":{"content":"<p>Call endpoint type.</p>\n","type":"text/plain"},"key":"type","value":"{{personIdentifierType}}"},{"disabled":true,"description":{"content":"<p>Calls Configuration ID.</p>\n","type":"text/plain"},"key":"callsConfigurationId","value":"{{callsConfigurationId}}"},{"disabled":true,"description":{"content":"<p>Application ID.</p>\n","type":"text/plain"},"key":"applicationId","value":""},{"disabled":true,"description":{"content":"<p>Caller identifier.</p>\n","type":"text/plain"},"key":"from","value":""},{"disabled":true,"description":{"content":"<p>Callee identifier.</p>\n","type":"text/plain"},"key":"to","value":""},{"disabled":true,"description":{"content":"<p>Call direction.</p>\n","type":"text/plain"},"key":"direction","value":""},{"disabled":true,"description":{"content":"<p>Call state.</p>\n","type":"text/plain"},"key":"status","value":""},{"disabled":true,"description":{"content":"<p>Date and time for when the call has been created. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ</code>.</p>\n","type":"text/plain"},"key":"startTimeAfter","value":""},{"disabled":true,"description":{"content":"<p>Conference ID.</p>\n","type":"text/plain"},"key":"conferenceId","value":""},{"disabled":true,"description":{"content":"<p>Dialog ID.</p>\n","type":"text/plain"},"key":"dialogId","value":""},{"disabled":true,"description":{"content":"<p>Bulk ID.</p>\n","type":"text/plain"},"key":"bulkId","value":""},{"disabled":true,"description":{"content":"<p>Results page to retrieve (0..N). Default: <code>0</code>.</p>\n","type":"text/plain"},"key":"page","value":""},{"disabled":true,"description":{"content":"<p>Number of records per page. Default: <code>20</code>.</p>\n","type":"text/plain"},"key":"size","value":""}],"variable":[]}},"response":[{"id":"ff7fc3ac-8be8-4b1c-b5e4-6d819dda00d4","name":"200 OK","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/calls","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","calls"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Call endpoint type.","disabled":true},{"key":"callsConfigurationId","value":"{{callsConfigurationId}}","description":"Calls Configuration ID.","disabled":true},{"key":"applicationId","value":"","description":"Application ID.","disabled":true},{"key":"from","value":"","description":"Caller identifier.","disabled":true},{"key":"to","value":"","description":"Callee identifier.","disabled":true},{"key":"direction","value":"","description":"Call direction.","disabled":true},{"key":"status","value":"","description":"Call state.","disabled":true},{"key":"startTimeAfter","value":"","description":"Date and time for when the call has been created. Has the following format: `yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ`.","disabled":true},{"key":"conferenceId","value":"","description":"Conference ID.","disabled":true},{"key":"dialogId","value":"","description":"Dialog ID.","disabled":true},{"key":"bulkId","value":"","description":"Bulk ID.","disabled":true},{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"text","header":null,"cookie":[],"responseTime":null,"body":null},{"id":"55beeff9-dd09-4068-bbfc-be283b3f9760","name":"400 - Error responses","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/calls","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","calls"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Call endpoint type.","disabled":true},{"key":"callsConfigurationId","value":"{{callsConfigurationId}}","description":"Calls Configuration ID.","disabled":true},{"key":"applicationId","value":"","description":"Application ID.","disabled":true},{"key":"from","value":"","description":"Caller identifier.","disabled":true},{"key":"to","value":"","description":"Callee identifier.","disabled":true},{"key":"direction","value":"","description":"Call direction.","disabled":true},{"key":"status","value":"","description":"Call state.","disabled":true},{"key":"startTimeAfter","value":"","description":"Date and time for when the call has been created. Has the following format: `yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ`.","disabled":true},{"key":"conferenceId","value":"","description":"Conference ID.","disabled":true},{"key":"dialogId","value":"","description":"Dialog ID.","disabled":true},{"key":"bulkId","value":"","description":"Bulk ID.","disabled":true},{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"BAD_REQUEST\",\n      \"text\": \"Request is invalid.\"\n    }\n  }\n}"},{"id":"54719e79-1755-47a2-b7ff-9ab6f9890ada","name":"401 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/calls","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","calls"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Call endpoint type.","disabled":true},{"key":"callsConfigurationId","value":"{{callsConfigurationId}}","description":"Calls Configuration ID.","disabled":true},{"key":"applicationId","value":"","description":"Application ID.","disabled":true},{"key":"from","value":"","description":"Caller identifier.","disabled":true},{"key":"to","value":"","description":"Callee identifier.","disabled":true},{"key":"direction","value":"","description":"Call direction.","disabled":true},{"key":"status","value":"","description":"Call state.","disabled":true},{"key":"startTimeAfter","value":"","description":"Date and time for when the call has been created. Has the following format: `yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ`.","disabled":true},{"key":"conferenceId","value":"","description":"Conference ID.","disabled":true},{"key":"dialogId","value":"","description":"Dialog ID.","disabled":true},{"key":"bulkId","value":"","description":"Bulk ID.","disabled":true},{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"eda25347-1e59-4507-adca-2e66d9d0e6f2","name":"403 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/calls","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","calls"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Call endpoint type.","disabled":true},{"key":"callsConfigurationId","value":"{{callsConfigurationId}}","description":"Calls Configuration ID.","disabled":true},{"key":"applicationId","value":"","description":"Application ID.","disabled":true},{"key":"from","value":"","description":"Caller identifier.","disabled":true},{"key":"to","value":"","description":"Callee identifier.","disabled":true},{"key":"direction","value":"","description":"Call direction.","disabled":true},{"key":"status","value":"","description":"Call state.","disabled":true},{"key":"startTimeAfter","value":"","description":"Date and time for when the call has been created. Has the following format: `yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ`.","disabled":true},{"key":"conferenceId","value":"","description":"Conference ID.","disabled":true},{"key":"dialogId","value":"","description":"Dialog ID.","disabled":true},{"key":"bulkId","value":"","description":"Bulk ID.","disabled":true},{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"a29a22ef-0c81-4a9f-8255-8d6607c34f93","name":"429 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/calls","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","calls"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Call endpoint type.","disabled":true},{"key":"callsConfigurationId","value":"{{callsConfigurationId}}","description":"Calls Configuration ID.","disabled":true},{"key":"applicationId","value":"","description":"Application ID.","disabled":true},{"key":"from","value":"","description":"Caller identifier.","disabled":true},{"key":"to","value":"","description":"Callee identifier.","disabled":true},{"key":"direction","value":"","description":"Call direction.","disabled":true},{"key":"status","value":"","description":"Call state.","disabled":true},{"key":"startTimeAfter","value":"","description":"Date and time for when the call has been created. Has the following format: `yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ`.","disabled":true},{"key":"conferenceId","value":"","description":"Conference ID.","disabled":true},{"key":"dialogId","value":"","description":"Dialog ID.","disabled":true},{"key":"bulkId","value":"","description":"Bulk ID.","disabled":true},{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"7c60ea57-a80c-4e57-ae91-ac3134f2b013","name":"500 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/calls","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","calls"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Call endpoint type.","disabled":true},{"key":"callsConfigurationId","value":"{{callsConfigurationId}}","description":"Calls Configuration ID.","disabled":true},{"key":"applicationId","value":"","description":"Application ID.","disabled":true},{"key":"from","value":"","description":"Caller identifier.","disabled":true},{"key":"to","value":"","description":"Callee identifier.","disabled":true},{"key":"direction","value":"","description":"Call direction.","disabled":true},{"key":"status","value":"","description":"Call state.","disabled":true},{"key":"startTimeAfter","value":"","description":"Date and time for when the call has been created. Has the following format: `yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ`.","disabled":true},{"key":"conferenceId","value":"","description":"Conference ID.","disabled":true},{"key":"dialogId","value":"","description":"Dialog ID.","disabled":true},{"key":"bulkId","value":"","description":"Bulk ID.","disabled":true},{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"5474c816-7057-49c9-b845-ee01e5de693b"},{"name":"Get calls history","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var j = pm.response.json();","if (j.results && j.results.length) { pm.environment.set(\"callId\", j.results[0].callId); }"],"type":"text/javascript","packages":{}}}],"id":"7e471288-a202-4e86-b561-9de40904321d","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/calls/1/calls/history?size=5","description":"<p>Get calls history.</p>\n<p>Get calls history with pagination. Calls history retention period is 5 days.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>type</em></td>\n<td>String</td>\n<td>Call endpoint type. One of: <code>PHONE</code>, <code>SIP</code>, <code>WEBRTC</code>, <code>VIBER</code>, <code>WHATSAPP</code>, <code>WEBSOCKET</code>.</td>\n</tr>\n<tr>\n<td><em>callsConfigurationId</em></td>\n<td>String</td>\n<td>Calls Configuration ID.</td>\n</tr>\n<tr>\n<td><em>applicationId</em></td>\n<td>String</td>\n<td>Application ID.</td>\n</tr>\n<tr>\n<td><em>from</em></td>\n<td>String</td>\n<td>Caller identifier.</td>\n</tr>\n<tr>\n<td><em>to</em></td>\n<td>String</td>\n<td>Callee identifier.</td>\n</tr>\n<tr>\n<td><em>direction</em></td>\n<td>String</td>\n<td>Call direction. One of: <code>INBOUND</code>, <code>OUTBOUND</code>.</td>\n</tr>\n<tr>\n<td><em>status</em></td>\n<td>String</td>\n<td>Call state. One of: <code>CALLING</code>, <code>RINGING</code>, <code>PRE_ESTABLISHED</code>, <code>ESTABLISHED</code>, <code>FINISHED</code>, <code>FAILED</code>, <code>CANCELLED</code>, <code>NO_ANSWER</code>, <code>BUSY</code>.</td>\n</tr>\n<tr>\n<td><em>startTimeAfter</em></td>\n<td>String</td>\n<td>Date and time for when the call has been created. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ</code>.</td>\n</tr>\n<tr>\n<td><em>conferenceId</em></td>\n<td>String</td>\n<td>Conference ID.</td>\n</tr>\n<tr>\n<td><em>dialogId</em></td>\n<td>String</td>\n<td>Dialog ID.</td>\n</tr>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>Bulk ID.</td>\n</tr>\n<tr>\n<td><em>page</em></td>\n<td>Int</td>\n<td>Results page to retrieve (0..N). Default: <code>0</code>.</td>\n</tr>\n<tr>\n<td><em>size</em></td>\n<td>Int</td>\n<td>Number of records per page. Default: <code>20</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results</em></td>\n<td>Array</td>\n<td>The list of the results for this page.</td>\n</tr>\n<tr>\n<td><em>results[].callId</em></td>\n<td>String</td>\n<td>Unique call ID.</td>\n</tr>\n<tr>\n<td><em>results[].endpoint</em></td>\n<td>Object</td>\n<td><strong>Required.</strong> Call endpoint. Represents a caller for the inbound calls and a callee for the outbound calls.</td>\n</tr>\n<tr>\n<td><em>results[].endpoint.type</em></td>\n<td>String</td>\n<td>One of: <code>PHONE</code>, <code>SIP</code>, <code>WEBRTC</code>, <code>VIBER</code>, <code>WHATSAPP</code>, <code>WEBSOCKET</code>.</td>\n</tr>\n<tr>\n<td><em>results[].from</em></td>\n<td>String</td>\n<td>Caller ID.</td>\n</tr>\n<tr>\n<td><em>results[].to</em></td>\n<td>String</td>\n<td>Callee ID.</td>\n</tr>\n<tr>\n<td><em>results[].direction</em></td>\n<td>String</td>\n<td>Call direction. One of: <code>INBOUND</code>, <code>OUTBOUND</code>.</td>\n</tr>\n<tr>\n<td><em>results[].state</em></td>\n<td>String</td>\n<td>Call state. One of: <code>CALLING</code>, <code>RINGING</code>, <code>PRE_ESTABLISHED</code>, <code>ESTABLISHED</code>, <code>FINISHED</code>, <code>FAILED</code>, <code>CANCELLED</code>, <code>NO_ANSWER</code>, <code>BUSY</code>.</td>\n</tr>\n<tr>\n<td><em>results[].startTime</em></td>\n<td>String</td>\n<td>Date and time for when the call has been created.</td>\n</tr>\n<tr>\n<td><em>results[].answerTime</em></td>\n<td>String</td>\n<td>Date and time for when the call has been answered.</td>\n</tr>\n<tr>\n<td><em>results[].endTime</em></td>\n<td>String</td>\n<td>Date and time for when the call has been finished.</td>\n</tr>\n<tr>\n<td><em>results[].parentCallId</em></td>\n<td>String</td>\n<td>Parent call ID.</td>\n</tr>\n<tr>\n<td><em>results[].machineDetection</em></td>\n<td>Object</td>\n<td>Properties of the events that provide Answering Machine Detection result.</td>\n</tr>\n<tr>\n<td><em>results[].machineDetection.detectionResult</em></td>\n<td>String</td>\n<td>Detected class during analysis of the call. Always returns either HUMAN or MACHINE. Use confidenceRating for a finer grained analysis result One of: <code>HUMAN</code>, <code>MACHINE</code>.</td>\n</tr>\n<tr>\n<td><em>results[].machineDetection.confidenceRating</em></td>\n<td>Object</td>\n<td>A map representing the confidence rating for each detection class. The key is a tag indicating the detection class, and the value is a float between <code>0.0</code> and <code>1.0</code> representing the confidence rating. Possible classes are: <code>HUMAN</code>, <code>MACHINE</code>, <code>MUSIC</code>, <code>RINGING</code>, <code>NOISE</code>, <code>SILENCE</code> and <code>OTHER</code>. Each class confidence rating is independent from the other, thereby the sum of all confidence values may not equal 1.0.</td>\n</tr>\n<tr>\n<td><em>results[].machineDetection.customData</em></td>\n<td>Object</td>\n<td>Custom data.</td>\n</tr>\n<tr>\n<td><em>results[].ringDuration</em></td>\n<td>Int</td>\n<td>Ringing duration in seconds.</td>\n</tr>\n<tr>\n<td><em>results[].callsConfigurationIds</em></td>\n<td>Array</td>\n<td>IDs of the calls configurations used during the call.</td>\n</tr>\n<tr>\n<td><em>results[].platform</em></td>\n<td>Object</td>\n<td>Platform options. For more details, see documentation.</td>\n</tr>\n<tr>\n<td><em>results[].platform.entityId</em></td>\n<td>String</td>\n<td>Required to use entity in a send request for outbound traffic. Returned in notification events. For more details, see documentation.</td>\n</tr>\n<tr>\n<td><em>results[].platform.applicationId</em></td>\n<td>String</td>\n<td>Required for application use in a send request for outbound traffic. Returned in notification events. For more details, see documentation.</td>\n</tr>\n<tr>\n<td><em>results[].conferenceIds</em></td>\n<td>Array</td>\n<td>IDs of the conferences where the call was a participant.</td>\n</tr>\n<tr>\n<td><em>results[].duration</em></td>\n<td>Int</td>\n<td>Call duration in seconds.</td>\n</tr>\n<tr>\n<td><em>results[].hasCameraVideo</em></td>\n<td>Boolean</td>\n<td>Indicates if camera was enabled during the call.</td>\n</tr>\n<tr>\n<td><em>results[].hasScreenshareVideo</em></td>\n<td>Boolean</td>\n<td>Indicates if screen sharing was enabled during the call.</td>\n</tr>\n<tr>\n<td><em>results[].errorCode</em></td>\n<td>Object</td>\n<td>Reason why the call has finished.</td>\n</tr>\n<tr>\n<td><em>results[].errorCode.id</em></td>\n<td>Int</td>\n<td>Unique ErrorCode ID.</td>\n</tr>\n<tr>\n<td><em>results[].errorCode.name</em></td>\n<td>String</td>\n<td>Unique ErrorCode name in machine-readable format.</td>\n</tr>\n<tr>\n<td><em>results[].errorCode.description</em></td>\n<td>String</td>\n<td>ErrorCode description in human-readable format.</td>\n</tr>\n<tr>\n<td><em>results[].customData</em></td>\n<td>Object</td>\n<td>Custom data.</td>\n</tr>\n<tr>\n<td><em>results[].dialogId</em></td>\n<td>String</td>\n<td>Dialog ID.</td>\n</tr>\n<tr>\n<td><em>results[].sender</em></td>\n<td>String</td>\n<td>Sender.</td>\n</tr>\n<tr>\n<td><em>results[].hangupSource</em></td>\n<td>String</td>\n<td>Hangup source. One of: <code>ENDPOINT</code>, <code>API</code>, <code>PLATFORM</code>.</td>\n</tr>\n<tr>\n<td><em>results[].externalId</em></td>\n<td>String</td>\n<td>Client defined call ID.</td>\n</tr>\n<tr>\n<td><em>paging</em></td>\n<td>Object</td>\n<td>Contains information about the page.</td>\n</tr>\n<tr>\n<td><em>paging.page</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Requested page number.</td>\n</tr>\n<tr>\n<td><em>paging.size</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Requested page size.</td>\n</tr>\n<tr>\n<td><em>paging.totalPages</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> The total number of pages of the results matching the requested parameters.</td>\n</tr>\n<tr>\n<td><em>paging.totalResults</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> The total number of the results matching the requested parameters.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["calls","1","calls","history"],"host":["go2","vhdmedia","se"],"query":[{"key":"size","value":"5"}],"variable":[]}},"response":[{"id":"0b19a123-1280-45cf-928b-83fa56e11b88","name":"200 OK","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/calls/history?size=5","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","calls","history"],"query":[{"key":"size","value":"5"}]}},"status":"OK","code":200,"_postman_previewlanguage":"text","header":null,"cookie":[],"responseTime":null,"body":null},{"id":"e6083efb-bfc6-4e88-a9b1-12d1e94249e5","name":"400 - Error responses","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/calls/history?size=5","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","calls","history"],"query":[{"key":"size","value":"5"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"BAD_REQUEST\",\n      \"text\": \"Request is invalid.\"\n    }\n  }\n}"},{"id":"f8394e45-ce13-4ef7-85ab-d9a0b0e843d8","name":"401 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/calls/history?size=5","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","calls","history"],"query":[{"key":"size","value":"5"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"b233423c-b382-4619-b3c1-0f98e8ae690b","name":"403 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/calls/history?size=5","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","calls","history"],"query":[{"key":"size","value":"5"}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"1a78d2e1-7d88-4e81-a9ca-dd8f22f7f513","name":"429 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/calls/history?size=5","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","calls","history"],"query":[{"key":"size","value":"5"}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"85ec5cc3-098f-4734-9de7-4b3843526d8e","name":"500 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/calls/history?size=5","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","calls","history"],"query":[{"key":"size","value":"5"}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"7e471288-a202-4e86-b561-9de40904321d"},{"name":"Get call history","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","if (!(pm.environment.get(\"callId\") || \"\")) { skip(\"callId is not set (an earlier request did not create it)\"); }"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests for Get call history.","pm.test(\"Status code is 200\", function () { pm.expect(pm.response.code).to.eql(200); });","pm.test(\"Response time is below 5000ms\", function () { pm.expect(pm.response.responseTime).to.be.below(5000); });","pm.test(\"The call history is returned with the documented fields\", function () {","    var j = pm.response.json();","    pm.expect(j).to.include.all.keys(\"callId\", \"from\", \"to\", \"direction\", \"state\", \"startTime\");","    pm.expect(j.direction).to.be.oneOf([\"INBOUND\", \"OUTBOUND\"]);","});"],"type":"text/javascript","packages":{}}}],"id":"f1effe35-afeb-4d56-9d1b-7642217be81d","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/calls/1/calls/{{callId}}/history","description":"<p>Get call history.</p>\n<p>Get a single call history. Call history retention period is 5 days.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>callId</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Call ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>callId</em></td>\n<td>String</td>\n<td>Unique call ID.</td>\n</tr>\n<tr>\n<td><em>endpoint</em></td>\n<td>Object</td>\n<td><strong>Required.</strong> Call endpoint. Represents a caller for the inbound calls and a callee for the outbound calls.</td>\n</tr>\n<tr>\n<td><em>endpoint.type</em></td>\n<td>String</td>\n<td>One of: <code>PHONE</code>, <code>SIP</code>, <code>WEBRTC</code>, <code>VIBER</code>, <code>WHATSAPP</code>, <code>WEBSOCKET</code>.</td>\n</tr>\n<tr>\n<td><em>from</em></td>\n<td>String</td>\n<td>Caller ID.</td>\n</tr>\n<tr>\n<td><em>to</em></td>\n<td>String</td>\n<td>Callee ID.</td>\n</tr>\n<tr>\n<td><em>direction</em></td>\n<td>String</td>\n<td>Call direction. One of: <code>INBOUND</code>, <code>OUTBOUND</code>.</td>\n</tr>\n<tr>\n<td><em>state</em></td>\n<td>String</td>\n<td>Call state. One of: <code>CALLING</code>, <code>RINGING</code>, <code>PRE_ESTABLISHED</code>, <code>ESTABLISHED</code>, <code>FINISHED</code>, <code>FAILED</code>, <code>CANCELLED</code>, <code>NO_ANSWER</code>, <code>BUSY</code>.</td>\n</tr>\n<tr>\n<td><em>startTime</em></td>\n<td>String</td>\n<td>Date and time for when the call has been created.</td>\n</tr>\n<tr>\n<td><em>answerTime</em></td>\n<td>String</td>\n<td>Date and time for when the call has been answered.</td>\n</tr>\n<tr>\n<td><em>endTime</em></td>\n<td>String</td>\n<td>Date and time for when the call has been finished.</td>\n</tr>\n<tr>\n<td><em>parentCallId</em></td>\n<td>String</td>\n<td>Parent call ID.</td>\n</tr>\n<tr>\n<td><em>machineDetection</em></td>\n<td>Object</td>\n<td>Properties of the events that provide Answering Machine Detection result.</td>\n</tr>\n<tr>\n<td><em>machineDetection.detectionResult</em></td>\n<td>String</td>\n<td>Detected class during analysis of the call. Always returns either HUMAN or MACHINE. Use confidenceRating for a finer grained analysis result One of: <code>HUMAN</code>, <code>MACHINE</code>.</td>\n</tr>\n<tr>\n<td><em>machineDetection.confidenceRating</em></td>\n<td>Object</td>\n<td>A map representing the confidence rating for each detection class. The key is a tag indicating the detection class, and the value is a float between <code>0.0</code> and <code>1.0</code> representing the confidence rating. Possible classes are: <code>HUMAN</code>, <code>MACHINE</code>, <code>MUSIC</code>, <code>RINGING</code>, <code>NOISE</code>, <code>SILENCE</code> and <code>OTHER</code>. Each class confidence rating is independent from the other, thereby the sum of all confidence values may not equal 1.0.</td>\n</tr>\n<tr>\n<td><em>machineDetection.customData</em></td>\n<td>Object</td>\n<td>Custom data.</td>\n</tr>\n<tr>\n<td><em>ringDuration</em></td>\n<td>Int</td>\n<td>Ringing duration in seconds.</td>\n</tr>\n<tr>\n<td><em>callsConfigurationIds</em></td>\n<td>Array</td>\n<td>IDs of the calls configurations used during the call.</td>\n</tr>\n<tr>\n<td><em>platform</em></td>\n<td>Object</td>\n<td>Platform options. For more details, see documentation.</td>\n</tr>\n<tr>\n<td><em>platform.entityId</em></td>\n<td>String</td>\n<td>Required to use entity in a send request for outbound traffic. Returned in notification events. For more details, see documentation.</td>\n</tr>\n<tr>\n<td><em>platform.applicationId</em></td>\n<td>String</td>\n<td>Required for application use in a send request for outbound traffic. Returned in notification events. For more details, see documentation.</td>\n</tr>\n<tr>\n<td><em>conferenceIds</em></td>\n<td>Array</td>\n<td>IDs of the conferences where the call was a participant.</td>\n</tr>\n<tr>\n<td><em>duration</em></td>\n<td>Int</td>\n<td>Call duration in seconds.</td>\n</tr>\n<tr>\n<td><em>hasCameraVideo</em></td>\n<td>Boolean</td>\n<td>Indicates if camera was enabled during the call.</td>\n</tr>\n<tr>\n<td><em>hasScreenshareVideo</em></td>\n<td>Boolean</td>\n<td>Indicates if screen sharing was enabled during the call.</td>\n</tr>\n<tr>\n<td><em>errorCode</em></td>\n<td>Object</td>\n<td>Reason why the call has finished.</td>\n</tr>\n<tr>\n<td><em>errorCode.id</em></td>\n<td>Int</td>\n<td>Unique ErrorCode ID.</td>\n</tr>\n<tr>\n<td><em>errorCode.name</em></td>\n<td>String</td>\n<td>Unique ErrorCode name in machine-readable format.</td>\n</tr>\n<tr>\n<td><em>errorCode.description</em></td>\n<td>String</td>\n<td>ErrorCode description in human-readable format.</td>\n</tr>\n<tr>\n<td><em>customData</em></td>\n<td>Object</td>\n<td>Custom data.</td>\n</tr>\n<tr>\n<td><em>dialogId</em></td>\n<td>String</td>\n<td>Dialog ID.</td>\n</tr>\n<tr>\n<td><em>sender</em></td>\n<td>String</td>\n<td>Sender.</td>\n</tr>\n<tr>\n<td><em>hangupSource</em></td>\n<td>String</td>\n<td>Hangup source. One of: <code>ENDPOINT</code>, <code>API</code>, <code>PLATFORM</code>.</td>\n</tr>\n<tr>\n<td><em>externalId</em></td>\n<td>String</td>\n<td>Client defined call ID.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["calls","1","calls","{{callId}}","history"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"be401782-04ba-479d-aefe-32f11cb4d415","name":"200 - PHONE call response","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/calls/1/calls/{{callId}}/history"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"callId\": \"d8d84155-3831-43fb-91c9-10b5a8d628a0\",\n  \"endpoint\": {\n    \"type\": \"PHONE\",\n    \"phoneNumber\": \"41792036727\"\n  },\n  \"from\": \"41793026834\",\n  \"to\": \"41792036727\",\n  \"direction\": \"OUTBOUND\",\n  \"state\": \"FINISHED\",\n  \"startTime\": \"2026-01-15T11:59:30.000+0000\",\n  \"answerTime\": \"2026-01-15T11:59:35.000+0000\",\n  \"endTime\": \"2026-01-15T12:00:00.000+0000\",\n  \"ringDuration\": 5,\n  \"callsConfigurationIds\": [\n    \"dc5942707c704551a00cd2ea\"\n  ],\n  \"platform\": {\n    \"applicationId\": \"61c060db2675060027d8c7a6\"\n  },\n  \"conferenceIds\": [\n    \"e8a7c0f5-0f0b-4ccf-84a4-1b7e5f699001\"\n  ],\n  \"duration\": 25,\n  \"customData\": {\n    \"key1\": \"value1\",\n    \"key2\": \"value2\"\n  },\n  \"dialogId\": \"034e622a-cc7e-456d-8a10-0ba43b11aa5e\"\n}"},{"id":"d8b43811-afdf-4489-87e5-2b1d4f44184a","name":"401 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/calls/1/calls/{{callId}}/history"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"4e8764dd-c245-407b-b69b-be3e462468c8","name":"403 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/calls/1/calls/{{callId}}/history"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"f4e877ca-b404-40ce-965a-63720e6cf1c9","name":"404 - Error responses","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/calls/1/calls/{{callId}}/history"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"NOT_FOUND\",\n      \"text\": \"Resource was not found.\"\n    }\n  }\n}"},{"id":"55b3a729-a420-4a28-8db3-facbeb455692","name":"429 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/calls/1/calls/{{callId}}/history"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"1a2e092e-0f48-4898-b48b-ed7b18ed4919","name":"500 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/calls/1/calls/{{callId}}/history"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"f1effe35-afeb-4d56-9d1b-7642217be81d"}],"id":"1d7ef243-8880-4360-b475-dd9112d94b82","description":"<p>View active calls and call history.</p>\n","_postman_id":"1d7ef243-8880-4360-b475-dd9112d94b82"},{"name":"3 Conferences","item":[{"name":"Get conferences","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"results\", \"paging\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","","pm.test(\"'results' is an array\", function () {","    pm.expect(responseBody[\"results\"]).to.be.an('array');","});"],"type":"text/javascript","packages":{}}}],"id":"8f416531-8641-48ba-a70d-ff570a2670fa","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/calls/1/conferences","description":"<p>Get conferences.</p>\n<p>Get conferences with pagination.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>Conference name.</td>\n</tr>\n<tr>\n<td><em>callId</em></td>\n<td>String</td>\n<td>Call ID.</td>\n</tr>\n<tr>\n<td><em>callsConfigurationId</em></td>\n<td>String</td>\n<td>Calls Configuration ID.</td>\n</tr>\n<tr>\n<td><em>applicationId</em></td>\n<td>String</td>\n<td>Application ID.</td>\n</tr>\n<tr>\n<td><em>startTimeAfter</em></td>\n<td>String</td>\n<td>Date and time for when the conference has been created. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ</code>.</td>\n</tr>\n<tr>\n<td><em>page</em></td>\n<td>Int</td>\n<td>Results page to retrieve (0..N). Default: <code>0</code>.</td>\n</tr>\n<tr>\n<td><em>size</em></td>\n<td>Int</td>\n<td>Number of records per page. Default: <code>20</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results</em></td>\n<td>Array</td>\n<td>The list of the results for this page.</td>\n</tr>\n<tr>\n<td><em>results[].id</em></td>\n<td>String</td>\n<td>Unique conference ID.</td>\n</tr>\n<tr>\n<td><em>results[].name</em></td>\n<td>String</td>\n<td>Conference name, requested or autogenerated on creation.</td>\n</tr>\n<tr>\n<td><em>results[].participants</em></td>\n<td>Array</td>\n<td>The list of conference participants.</td>\n</tr>\n<tr>\n<td><em>results[].participants[].callId</em></td>\n<td>String</td>\n<td>Participant call ID.</td>\n</tr>\n<tr>\n<td><em>results[].participants[].endpoint</em></td>\n<td>Object</td>\n<td><strong>Required.</strong> Call endpoint. Represents a caller for the inbound calls and a callee for the outbound calls.</td>\n</tr>\n<tr>\n<td><em>results[].participants[].endpoint.type</em></td>\n<td>String</td>\n<td>One of: <code>PHONE</code>, <code>SIP</code>, <code>WEBRTC</code>, <code>VIBER</code>, <code>WHATSAPP</code>, <code>WEBSOCKET</code>.</td>\n</tr>\n<tr>\n<td><em>results[].participants[].state</em></td>\n<td>String</td>\n<td>Participant state. One of: <code>JOINING</code>, <code>JOINED</code>, <code>LEFT</code>.</td>\n</tr>\n<tr>\n<td><em>results[].participants[].joinTime</em></td>\n<td>String</td>\n<td>Date and time when the participant has joined.</td>\n</tr>\n<tr>\n<td><em>results[].participants[].leaveTime</em></td>\n<td>String</td>\n<td>Date and time when the participant has left.</td>\n</tr>\n<tr>\n<td><em>results[].participants[].media</em></td>\n<td>Object</td>\n<td></td>\n</tr>\n<tr>\n<td><em>results[].participants[].media.audio</em></td>\n<td>Object</td>\n<td>Audio media properties.</td>\n</tr>\n<tr>\n<td><em>results[].participants[].media.audio.muted</em></td>\n<td>Boolean</td>\n<td>Indicates whether the end user can speak.</td>\n</tr>\n<tr>\n<td><em>results[].participants[].media.audio.userMuted</em></td>\n<td>Boolean</td>\n<td>Indicates whether the end user muted himself.</td>\n</tr>\n<tr>\n<td><em>results[].participants[].media.audio.deaf</em></td>\n<td>Boolean</td>\n<td>Indicates whether the end user can hear.</td>\n</tr>\n<tr>\n<td><em>results[].participants[].media.video</em></td>\n<td>Object</td>\n<td>Video media properties.</td>\n</tr>\n<tr>\n<td><em>results[].participants[].media.video.camera</em></td>\n<td>Boolean</td>\n<td>Indicates whether there is a video feed.</td>\n</tr>\n<tr>\n<td><em>results[].participants[].media.video.screenShare</em></td>\n<td>Boolean</td>\n<td>Indicates whether the end user is sharing their screen.</td>\n</tr>\n<tr>\n<td><em>results[].participants[].media.video.blind</em></td>\n<td>Boolean</td>\n<td>Indicates whether the end user can receive remote videos.</td>\n</tr>\n<tr>\n<td><em>results[].participants[].role</em></td>\n<td>Object</td>\n<td>Represents the role of the call inside the conference.</td>\n</tr>\n<tr>\n<td><em>results[].participants[].role.type</em></td>\n<td>String</td>\n<td>One of: <code>DEFAULT</code>, <code>ADVISOR</code>, <code>MONITOR</code>, <code>LISTENER</code>, <code>AUDITOR</code>.</td>\n</tr>\n<tr>\n<td><em>results[].callsConfigurationId</em></td>\n<td>String</td>\n<td>Calls Configuration ID.</td>\n</tr>\n<tr>\n<td><em>results[].platform</em></td>\n<td>Object</td>\n<td>Platform options. For more details, see documentation.</td>\n</tr>\n<tr>\n<td><em>results[].platform.entityId</em></td>\n<td>String</td>\n<td>Required to use entity in a send request for outbound traffic. Returned in notification events. For more details, see documentation.</td>\n</tr>\n<tr>\n<td><em>results[].platform.applicationId</em></td>\n<td>String</td>\n<td>Required for application use in a send request for outbound traffic. Returned in notification events. For more details, see documentation.</td>\n</tr>\n<tr>\n<td><em>paging</em></td>\n<td>Object</td>\n<td>Contains information about the page.</td>\n</tr>\n<tr>\n<td><em>paging.page</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Requested page number.</td>\n</tr>\n<tr>\n<td><em>paging.size</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Requested page size.</td>\n</tr>\n<tr>\n<td><em>paging.totalPages</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> The total number of pages of the results matching the requested parameters.</td>\n</tr>\n<tr>\n<td><em>paging.totalResults</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> The total number of the results matching the requested parameters.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["calls","1","conferences"],"host":["go2","vhdmedia","se"],"query":[{"disabled":true,"description":{"content":"<p>Conference name.</p>\n","type":"text/plain"},"key":"name","value":""},{"disabled":true,"description":{"content":"<p>Call ID.</p>\n","type":"text/plain"},"key":"callId","value":"{{callId}}"},{"disabled":true,"description":{"content":"<p>Calls Configuration ID.</p>\n","type":"text/plain"},"key":"callsConfigurationId","value":"{{callsConfigurationId}}"},{"disabled":true,"description":{"content":"<p>Application ID.</p>\n","type":"text/plain"},"key":"applicationId","value":""},{"disabled":true,"description":{"content":"<p>Date and time for when the conference has been created. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ</code>.</p>\n","type":"text/plain"},"key":"startTimeAfter","value":""},{"disabled":true,"description":{"content":"<p>Results page to retrieve (0..N). Default: <code>0</code>.</p>\n","type":"text/plain"},"key":"page","value":""},{"disabled":true,"description":{"content":"<p>Number of records per page. Default: <code>20</code>.</p>\n","type":"text/plain"},"key":"size","value":""}],"variable":[]}},"response":[{"id":"f9a65c96-1118-4b9a-b57e-3283d69d1702","name":"200 - Conference page response.","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/conferences","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","conferences"],"query":[{"key":"name","value":"","description":"Conference name.","disabled":true},{"key":"callId","value":"{{callId}}","description":"Call ID.","disabled":true},{"key":"callsConfigurationId","value":"{{callsConfigurationId}}","description":"Calls Configuration ID.","disabled":true},{"key":"applicationId","value":"","description":"Application ID.","disabled":true},{"key":"startTimeAfter","value":"","description":"Date and time for when the conference has been created. Has the following format: `yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ`.","disabled":true},{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"results\": [\n    {\n      \"id\": \"e8a7c0f5-0f0b-4ccf-84a4-1b7e5f699001\",\n      \"name\": \"Example conference\",\n      \"participants\": [],\n      \"callsConfigurationId\": \"dc5942707c704551a00cd2ea\",\n      \"platform\": {\n        \"applicationId\": \"61c060db2675060027d8c7a6\"\n      }\n    }\n  ],\n  \"paging\": {\n    \"page\": 0,\n    \"size\": 1,\n    \"totalPages\": 1,\n    \"totalResults\": 1\n  }\n}"},{"id":"524f66ef-a175-488b-9a26-365e24111923","name":"400 - Error responses","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/conferences","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","conferences"],"query":[{"key":"name","value":"","description":"Conference name.","disabled":true},{"key":"callId","value":"{{callId}}","description":"Call ID.","disabled":true},{"key":"callsConfigurationId","value":"{{callsConfigurationId}}","description":"Calls Configuration ID.","disabled":true},{"key":"applicationId","value":"","description":"Application ID.","disabled":true},{"key":"startTimeAfter","value":"","description":"Date and time for when the conference has been created. Has the following format: `yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ`.","disabled":true},{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"BAD_REQUEST\",\n      \"text\": \"Request is invalid.\"\n    }\n  }\n}"},{"id":"7bcf2f59-de67-46fe-89d0-ffaf1717e002","name":"401 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/conferences","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","conferences"],"query":[{"key":"name","value":"","description":"Conference name.","disabled":true},{"key":"callId","value":"{{callId}}","description":"Call ID.","disabled":true},{"key":"callsConfigurationId","value":"{{callsConfigurationId}}","description":"Calls Configuration ID.","disabled":true},{"key":"applicationId","value":"","description":"Application ID.","disabled":true},{"key":"startTimeAfter","value":"","description":"Date and time for when the conference has been created. Has the following format: `yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ`.","disabled":true},{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"6bf16fd2-2357-4443-940e-d2d156bc0527","name":"403 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/conferences","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","conferences"],"query":[{"key":"name","value":"","description":"Conference name.","disabled":true},{"key":"callId","value":"{{callId}}","description":"Call ID.","disabled":true},{"key":"callsConfigurationId","value":"{{callsConfigurationId}}","description":"Calls Configuration ID.","disabled":true},{"key":"applicationId","value":"","description":"Application ID.","disabled":true},{"key":"startTimeAfter","value":"","description":"Date and time for when the conference has been created. Has the following format: `yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ`.","disabled":true},{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"097220aa-9d0d-4fdd-abd9-7d70b9906d22","name":"429 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/conferences","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","conferences"],"query":[{"key":"name","value":"","description":"Conference name.","disabled":true},{"key":"callId","value":"{{callId}}","description":"Call ID.","disabled":true},{"key":"callsConfigurationId","value":"{{callsConfigurationId}}","description":"Calls Configuration ID.","disabled":true},{"key":"applicationId","value":"","description":"Application ID.","disabled":true},{"key":"startTimeAfter","value":"","description":"Date and time for when the conference has been created. Has the following format: `yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ`.","disabled":true},{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"db81ba96-ad16-4975-a095-8825b48c6c69","name":"500 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/conferences","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","conferences"],"query":[{"key":"name","value":"","description":"Conference name.","disabled":true},{"key":"callId","value":"{{callId}}","description":"Call ID.","disabled":true},{"key":"callsConfigurationId","value":"{{callsConfigurationId}}","description":"Calls Configuration ID.","disabled":true},{"key":"applicationId","value":"","description":"Application ID.","disabled":true},{"key":"startTimeAfter","value":"","description":"Date and time for when the conference has been created. Has the following format: `yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ`.","disabled":true},{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"8f416531-8641-48ba-a70d-ff570a2670fa"},{"name":"Get conferences history","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"results\", \"paging\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","","pm.test(\"'results' is an array\", function () {","    pm.expect(responseBody[\"results\"]).to.be.an('array');","});"],"type":"text/javascript","packages":{}}}],"id":"66386cc1-2f10-4d02-823a-2f5741651125","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/calls/1/conferences/history","description":"<p>Get conferences history.</p>\n<p>Get conferences history with pagination. Conferences history retention period is 5 days.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>Conference name.</td>\n</tr>\n<tr>\n<td><em>callId</em></td>\n<td>String</td>\n<td>Call ID.</td>\n</tr>\n<tr>\n<td><em>callsConfigurationId</em></td>\n<td>String</td>\n<td>Calls Configuration ID.</td>\n</tr>\n<tr>\n<td><em>applicationId</em></td>\n<td>String</td>\n<td>Application ID.</td>\n</tr>\n<tr>\n<td><em>startTimeAfter</em></td>\n<td>String</td>\n<td>Date and time for when the conference has been created. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ</code>.</td>\n</tr>\n<tr>\n<td><em>endTimeBefore</em></td>\n<td>String</td>\n<td>Date and time for when the conference has been finished. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ</code>.</td>\n</tr>\n<tr>\n<td><em>page</em></td>\n<td>Int</td>\n<td>Results page to retrieve (0..N). Default: <code>0</code>.</td>\n</tr>\n<tr>\n<td><em>size</em></td>\n<td>Int</td>\n<td>Number of records per page. Default: <code>20</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results</em></td>\n<td>Array</td>\n<td>The list of the results for this page.</td>\n</tr>\n<tr>\n<td><em>results[].conferenceId</em></td>\n<td>String</td>\n<td>Unique conference ID.</td>\n</tr>\n<tr>\n<td><em>results[].name</em></td>\n<td>String</td>\n<td>Conference name, requested or autogenerated on creation.</td>\n</tr>\n<tr>\n<td><em>results[].platform</em></td>\n<td>Object</td>\n<td>Platform options. For more details, see documentation.</td>\n</tr>\n<tr>\n<td><em>results[].platform.entityId</em></td>\n<td>String</td>\n<td>Required to use entity in a send request for outbound traffic. Returned in notification events. For more details, see documentation.</td>\n</tr>\n<tr>\n<td><em>results[].platform.applicationId</em></td>\n<td>String</td>\n<td>Required for application use in a send request for outbound traffic. Returned in notification events. For more details, see documentation.</td>\n</tr>\n<tr>\n<td><em>results[].startTime</em></td>\n<td>String</td>\n<td>Date and time for when the conference has been created.</td>\n</tr>\n<tr>\n<td><em>results[].endTime</em></td>\n<td>String</td>\n<td>Date and time for when the conference ended.</td>\n</tr>\n<tr>\n<td><em>results[].duration</em></td>\n<td>Int</td>\n<td>Conference duration in seconds.</td>\n</tr>\n<tr>\n<td><em>results[].sessions</em></td>\n<td>Array</td>\n<td>List of participant sessions.</td>\n</tr>\n<tr>\n<td><em>results[].sessions[].callId</em></td>\n<td>String</td>\n<td>Unique call ID.</td>\n</tr>\n<tr>\n<td><em>results[].sessions[].joinTime</em></td>\n<td>String</td>\n<td>Date and time for when the participant joined the conference.</td>\n</tr>\n<tr>\n<td><em>results[].sessions[].leaveTime</em></td>\n<td>String</td>\n<td>Date and time for when the participant left the conference.</td>\n</tr>\n<tr>\n<td><em>results[].recording</em></td>\n<td>Object</td>\n<td>Conference recordings.</td>\n</tr>\n<tr>\n<td><em>results[].recording.composedFiles</em></td>\n<td>Array</td>\n<td>File(s) with a recording of all conference participants.</td>\n</tr>\n<tr>\n<td><em>results[].recording.composedFiles[].id</em></td>\n<td>String</td>\n<td>File ID.</td>\n</tr>\n<tr>\n<td><em>results[].recording.composedFiles[].name</em></td>\n<td>String</td>\n<td><strong>Required.</strong> File name.</td>\n</tr>\n<tr>\n<td><em>results[].recording.composedFiles[].fileFormat</em></td>\n<td>String</td>\n<td><strong>Required.</strong> File format. One of: <code>MP3</code>, <code>WAV</code>, <code>MP4</code>.</td>\n</tr>\n<tr>\n<td><em>results[].recording.composedFiles[].size</em></td>\n<td>Int</td>\n<td>File size in bytes.</td>\n</tr>\n<tr>\n<td><em>results[].recording.composedFiles[].creationTime</em></td>\n<td>String</td>\n<td>File creation time.</td>\n</tr>\n<tr>\n<td><em>results[].recording.composedFiles[].duration</em></td>\n<td>Int</td>\n<td>File duration in seconds.</td>\n</tr>\n<tr>\n<td><em>results[].recording.composedFiles[].startTime</em></td>\n<td>String</td>\n<td>Date and time when the recording started.</td>\n</tr>\n<tr>\n<td><em>results[].recording.composedFiles[].endTime</em></td>\n<td>String</td>\n<td>Date and time when the recording ended.</td>\n</tr>\n<tr>\n<td><em>results[].recording.composedFiles[].location</em></td>\n<td>String</td>\n<td>Location of recording file after processing. One of: <code>SFTP</code>, <code>HOSTED</code>.</td>\n</tr>\n<tr>\n<td><em>results[].recording.composedFiles[].sftpUploadStatus</em></td>\n<td>String</td>\n<td>Indicates current status of the recording file being uploaded via SFTP. One of: <code>UPLOADING</code>, <code>UPLOADED</code>, <code>FAILED</code>.</td>\n</tr>\n<tr>\n<td><em>results[].recording.composedFiles[].customData</em></td>\n<td>Object</td>\n<td>Custom data.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings</em></td>\n<td>Array</td>\n<td>File(s) with a recording of one conference participant.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].callId</em></td>\n<td>String</td>\n<td>Call ID.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].endpoint</em></td>\n<td>Object</td>\n<td><strong>Required.</strong> Call endpoint. Represents a caller for the inbound calls and a callee for the outbound calls.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].endpoint.type</em></td>\n<td>String</td>\n<td>One of: <code>PHONE</code>, <code>SIP</code>, <code>WEBRTC</code>, <code>VIBER</code>, <code>WHATSAPP</code>, <code>WEBSOCKET</code>.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].direction</em></td>\n<td>String</td>\n<td>Call direction. One of: <code>INBOUND</code>, <code>OUTBOUND</code>.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].files</em></td>\n<td>Array</td>\n<td>Call recording files.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].files[].id</em></td>\n<td>String</td>\n<td>File ID.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].files[].name</em></td>\n<td>String</td>\n<td><strong>Required.</strong> File name.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].files[].fileFormat</em></td>\n<td>String</td>\n<td><strong>Required.</strong> File format. One of: <code>MP3</code>, <code>WAV</code>, <code>MP4</code>.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].files[].size</em></td>\n<td>Int</td>\n<td>File size in bytes.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].files[].creationTime</em></td>\n<td>String</td>\n<td>File creation time.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].files[].duration</em></td>\n<td>Int</td>\n<td>File duration in seconds.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].files[].startTime</em></td>\n<td>String</td>\n<td>Date and time when the recording started.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].files[].endTime</em></td>\n<td>String</td>\n<td>Date and time when the recording ended.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].files[].location</em></td>\n<td>String</td>\n<td>Location of recording file after processing. One of: <code>SFTP</code>, <code>HOSTED</code>.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].files[].sftpUploadStatus</em></td>\n<td>String</td>\n<td>Indicates current status of the recording file being uploaded via SFTP. One of: <code>UPLOADING</code>, <code>UPLOADED</code>, <code>FAILED</code>.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].files[].customData</em></td>\n<td>Object</td>\n<td>Custom data.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].status</em></td>\n<td>String</td>\n<td>Status of call recording. One of: <code>SUCCESSFUL</code>, <code>PARTIALLY_FAILED</code>, <code>FAILED</code>.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].reason</em></td>\n<td>String</td>\n<td>Reason for recording failure.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].callsConfigurationId</em></td>\n<td>String</td>\n<td>Calls Configuration ID.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].platform</em></td>\n<td>Object</td>\n<td>Platform options. For more details, see documentation.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].platform.entityId</em></td>\n<td>String</td>\n<td>Required to use entity in a send request for outbound traffic. Returned in notification events. For more details, see documentation.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].platform.applicationId</em></td>\n<td>String</td>\n<td>Required for application use in a send request for outbound traffic. Returned in notification events. For more details, see documentation.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].startTime</em></td>\n<td>String</td>\n<td>Date and time when the (first) call recording started.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].endTime</em></td>\n<td>String</td>\n<td>Date and time when the (last) call recording ended.</td>\n</tr>\n<tr>\n<td><em>results[].errorCode</em></td>\n<td>Object</td>\n<td>Reason why the call has finished.</td>\n</tr>\n<tr>\n<td><em>results[].errorCode.id</em></td>\n<td>Int</td>\n<td>Unique ErrorCode ID.</td>\n</tr>\n<tr>\n<td><em>results[].errorCode.name</em></td>\n<td>String</td>\n<td>Unique ErrorCode name in machine-readable format.</td>\n</tr>\n<tr>\n<td><em>results[].errorCode.description</em></td>\n<td>String</td>\n<td>ErrorCode description in human-readable format.</td>\n</tr>\n<tr>\n<td><em>paging</em></td>\n<td>Object</td>\n<td>Contains information about the page.</td>\n</tr>\n<tr>\n<td><em>paging.page</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Requested page number.</td>\n</tr>\n<tr>\n<td><em>paging.size</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Requested page size.</td>\n</tr>\n<tr>\n<td><em>paging.totalPages</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> The total number of pages of the results matching the requested parameters.</td>\n</tr>\n<tr>\n<td><em>paging.totalResults</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> The total number of the results matching the requested parameters.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["calls","1","conferences","history"],"host":["go2","vhdmedia","se"],"query":[{"disabled":true,"description":{"content":"<p>Conference name.</p>\n","type":"text/plain"},"key":"name","value":""},{"disabled":true,"description":{"content":"<p>Call ID.</p>\n","type":"text/plain"},"key":"callId","value":"{{callId}}"},{"disabled":true,"description":{"content":"<p>Calls Configuration ID.</p>\n","type":"text/plain"},"key":"callsConfigurationId","value":"{{callsConfigurationId}}"},{"disabled":true,"description":{"content":"<p>Application ID.</p>\n","type":"text/plain"},"key":"applicationId","value":""},{"disabled":true,"description":{"content":"<p>Date and time for when the conference has been created. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ</code>.</p>\n","type":"text/plain"},"key":"startTimeAfter","value":""},{"disabled":true,"description":{"content":"<p>Date and time for when the conference has been finished. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ</code>.</p>\n","type":"text/plain"},"key":"endTimeBefore","value":""},{"disabled":true,"description":{"content":"<p>Results page to retrieve (0..N). Default: <code>0</code>.</p>\n","type":"text/plain"},"key":"page","value":""},{"disabled":true,"description":{"content":"<p>Number of records per page. Default: <code>20</code>.</p>\n","type":"text/plain"},"key":"size","value":""}],"variable":[]}},"response":[{"id":"17875e7d-9f76-418a-9da4-ef864aa71c67","name":"200 - Conference log page response.","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/conferences/history","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","conferences","history"],"query":[{"key":"name","value":"","description":"Conference name.","disabled":true},{"key":"callId","value":"{{callId}}","description":"Call ID.","disabled":true},{"key":"callsConfigurationId","value":"{{callsConfigurationId}}","description":"Calls Configuration ID.","disabled":true},{"key":"applicationId","value":"","description":"Application ID.","disabled":true},{"key":"startTimeAfter","value":"","description":"Date and time for when the conference has been created. Has the following format: `yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ`.","disabled":true},{"key":"endTimeBefore","value":"","description":"Date and time for when the conference has been finished. Has the following format: `yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ`.","disabled":true},{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"results\": [\n    {\n      \"conferenceId\": \"e8a7c0f5-0f0b-4ccf-84a4-1b7e5f699001\",\n      \"name\": \"Example conference\",\n      \"platform\": {\n        \"applicationId\": \"61c060db2675060027d8c7a6\"\n      },\n      \"startTime\": \"2026-01-15T11:57:30.000+0000\",\n      \"endTime\": \"2026-01-15T11:59:20.000+0000\",\n      \"duration\": 110,\n      \"sessions\": [\n        {\n          \"callId\": \"d8d84155-3831-43fb-91c9-10b5a8d628a0\",\n          \"joinTime\": \"2026-01-15T11:58:00.000+0000\",\n          \"leaveTime\": \"2026-01-15T11:59:00.000+0000\"\n        },\n        {\n          \"callId\": \"ae024ad1-52e7-45d5-a5d2-cd7c809e03f8\",\n          \"joinTime\": \"2026-01-15T11:57:30.000+0000\",\n          \"leaveTime\": \"2026-01-15T11:59:20.000+0000\"\n        }\n      ],\n      \"recording\": {\n        \"composedFiles\": [\n          {\n            \"id\": \"65f0b3d7c8b6a00001a2b3d5\",\n            \"name\": \"example-recording.wav\",\n            \"fileFormat\": \"WAV\",\n            \"size\": 67564,\n            \"creationTime\": \"2026-01-15T12:00:00.000+0000\",\n            \"duration\": 10,\n            \"startTime\": \"2026-01-15T11:57:30.000+0000\",\n            \"endTime\": \"2026-01-15T11:59:20.000+0000\",\n            \"location\": \"HOSTED\"\n          }\n        ],\n        \"callRecordings\": [\n          {\n            \"callId\": \"d8d84155-3831-43fb-91c9-10b5a8d628a0\",\n            \"endpoint\": {\n              \"type\": \"PHONE\",\n              \"phoneNumber\": \"41793026834\"\n            },\n            \"direction\": \"INBOUND\",\n            \"files\": [\n              {\n                \"id\": \"d8d84155-3831-43fb-91c9-10b5a8d628a0\",\n                \"name\": \"d8d84155-3831-43fb-91c9-10b5a8d628a0_1652725357412.wav\",\n                \"fileFormat\": \"WAV\",\n                \"size\": 67564,\n                \"creationTime\": \"2026-01-15T12:00:00.150+0000\",\n                \"duration\": 10,\n                \"startTime\": \"2026-01-15T11:59:50.000+0000\",\n                \"endTime\": \"2026-01-15T12:00:00.000+0000\",\n                \"location\": \"HOSTED\",\n                \"customData\": {\n                  \"key1\": \"value1\",\n                  \"key2\": \"value2\"\n                }\n              }\n            ],\n            \"status\": \"SUCCESSFUL\"\n          },\n          {\n            \"callId\": \"ae024ad1-52e7-45d5-a5d2-cd7c809e03f8\",\n            \"endpoint\": {\n              \"type\": \"PHONE\",\n              \"phoneNumber\": \"41793026834\"\n            },\n            \"direction\": \"INBOUND\",\n            \"files\": [\n              {\n                \"id\": \"d8d84155-3831-43fb-91c9-10b5a8d628a0\",\n                \"name\": \"d8d84155-3831-43fb-91c9-10b5a8d628a0_1652725357412.wav\",\n                \"fileFormat\": \"WAV\",\n                \"size\": 67564,\n                \"creationTime\": \"2026-01-15T12:00:00.150+0000\",\n                \"duration\": 10,\n                \"startTime\": \"2026-01-15T11:59:50.000+0000\",\n                \"endTime\": \"2026-01-15T12:00:00.000+0000\",\n                \"location\": \"HOSTED\",\n                \"customData\": {\n                  \"key1\": \"value1\",\n                  \"key2\": \"value2\"\n                }\n              }\n            ],\n            \"status\": \"SUCCESSFUL\"\n          }\n        ]\n      },\n      \"errorCode\": {\n        \"id\": 10000,\n        \"name\": \"NORMAL_HANGUP\",\n        \"description\": \"The call has ended with hangup initiated by caller, callee or API\"\n      }\n    }\n  ],\n  \"paging\": {\n    \"page\": 0,\n    \"size\": 1,\n    \"totalPages\": 1,\n    \"totalResults\": 1\n  }\n}"},{"id":"759916ba-905b-4eb0-8505-2d35047a6952","name":"400 - Error responses","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/conferences/history","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","conferences","history"],"query":[{"key":"name","value":"","description":"Conference name.","disabled":true},{"key":"callId","value":"{{callId}}","description":"Call ID.","disabled":true},{"key":"callsConfigurationId","value":"{{callsConfigurationId}}","description":"Calls Configuration ID.","disabled":true},{"key":"applicationId","value":"","description":"Application ID.","disabled":true},{"key":"startTimeAfter","value":"","description":"Date and time for when the conference has been created. Has the following format: `yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ`.","disabled":true},{"key":"endTimeBefore","value":"","description":"Date and time for when the conference has been finished. Has the following format: `yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ`.","disabled":true},{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"BAD_REQUEST\",\n      \"text\": \"Request is invalid.\"\n    }\n  }\n}"},{"id":"cfe5fc4e-18b0-4a24-b0bd-64e9b2c63a5e","name":"401 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/conferences/history","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","conferences","history"],"query":[{"key":"name","value":"","description":"Conference name.","disabled":true},{"key":"callId","value":"{{callId}}","description":"Call ID.","disabled":true},{"key":"callsConfigurationId","value":"{{callsConfigurationId}}","description":"Calls Configuration ID.","disabled":true},{"key":"applicationId","value":"","description":"Application ID.","disabled":true},{"key":"startTimeAfter","value":"","description":"Date and time for when the conference has been created. Has the following format: `yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ`.","disabled":true},{"key":"endTimeBefore","value":"","description":"Date and time for when the conference has been finished. Has the following format: `yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ`.","disabled":true},{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"d3f2e6a4-2ad4-4457-acf7-403fe6af5f60","name":"403 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/conferences/history","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","conferences","history"],"query":[{"key":"name","value":"","description":"Conference name.","disabled":true},{"key":"callId","value":"{{callId}}","description":"Call ID.","disabled":true},{"key":"callsConfigurationId","value":"{{callsConfigurationId}}","description":"Calls Configuration ID.","disabled":true},{"key":"applicationId","value":"","description":"Application ID.","disabled":true},{"key":"startTimeAfter","value":"","description":"Date and time for when the conference has been created. Has the following format: `yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ`.","disabled":true},{"key":"endTimeBefore","value":"","description":"Date and time for when the conference has been finished. Has the following format: `yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ`.","disabled":true},{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"08fcf652-c0e0-423d-8692-ddf2e0fb90ee","name":"429 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/conferences/history","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","conferences","history"],"query":[{"key":"name","value":"","description":"Conference name.","disabled":true},{"key":"callId","value":"{{callId}}","description":"Call ID.","disabled":true},{"key":"callsConfigurationId","value":"{{callsConfigurationId}}","description":"Calls Configuration ID.","disabled":true},{"key":"applicationId","value":"","description":"Application ID.","disabled":true},{"key":"startTimeAfter","value":"","description":"Date and time for when the conference has been created. Has the following format: `yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ`.","disabled":true},{"key":"endTimeBefore","value":"","description":"Date and time for when the conference has been finished. Has the following format: `yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ`.","disabled":true},{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"603b7cbc-5450-4754-be26-dc7c1e837056","name":"500 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/conferences/history","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","conferences","history"],"query":[{"key":"name","value":"","description":"Conference name.","disabled":true},{"key":"callId","value":"{{callId}}","description":"Call ID.","disabled":true},{"key":"callsConfigurationId","value":"{{callsConfigurationId}}","description":"Calls Configuration ID.","disabled":true},{"key":"applicationId","value":"","description":"Application ID.","disabled":true},{"key":"startTimeAfter","value":"","description":"Date and time for when the conference has been created. Has the following format: `yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ`.","disabled":true},{"key":"endTimeBefore","value":"","description":"Date and time for when the conference has been finished. Has the following format: `yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ`.","disabled":true},{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"66386cc1-2f10-4d02-823a-2f5741651125"}],"id":"2cef8a04-0a17-4283-9672-e01ed08c4503","description":"<p>List conferences and their history.</p>\n","_postman_id":"2cef8a04-0a17-4283-9672-e01ed08c4503"},{"name":"4 Audio files","item":[{"name":"Get audio files (Calls API)","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var j = pm.response.json();","if (j.results && j.results.length) { pm.environment.set(\"callsFileId\", j.results[0].id); }"],"type":"text/javascript","packages":{}}}],"id":"394b34ee-0f64-4234-9596-1f8a7bfc3152","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/calls/1/files","description":"<p>Get files.</p>\n<p>Get files with pagination. Maximum number of pages is 100.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>page</em></td>\n<td>Int</td>\n<td>Results page to retrieve (0..N). Default: <code>0</code>.</td>\n</tr>\n<tr>\n<td><em>size</em></td>\n<td>Int</td>\n<td>Number of records per page. Default: <code>20</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results</em></td>\n<td>Array</td>\n<td>The list of the results for this page.</td>\n</tr>\n<tr>\n<td><em>results[].id</em></td>\n<td>String</td>\n<td>File ID.</td>\n</tr>\n<tr>\n<td><em>results[].name</em></td>\n<td>String</td>\n<td><strong>Required.</strong> File name.</td>\n</tr>\n<tr>\n<td><em>results[].fileFormat</em></td>\n<td>String</td>\n<td><strong>Required.</strong> File format. One of: <code>MP3</code>, <code>WAV</code>, <code>MP4</code>.</td>\n</tr>\n<tr>\n<td><em>results[].size</em></td>\n<td>Int</td>\n<td>File size in bytes.</td>\n</tr>\n<tr>\n<td><em>results[].creationTime</em></td>\n<td>String</td>\n<td>File creation time.</td>\n</tr>\n<tr>\n<td><em>results[].expirationTime</em></td>\n<td>String</td>\n<td>File expiration time.</td>\n</tr>\n<tr>\n<td><em>results[].duration</em></td>\n<td>Int</td>\n<td>File duration in seconds.</td>\n</tr>\n<tr>\n<td><em>paging</em></td>\n<td>Object</td>\n<td>Contains information about the page.</td>\n</tr>\n<tr>\n<td><em>paging.page</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Requested page number.</td>\n</tr>\n<tr>\n<td><em>paging.size</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Requested page size.</td>\n</tr>\n<tr>\n<td><em>paging.totalPages</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> The total number of pages of the results matching the requested parameters.</td>\n</tr>\n<tr>\n<td><em>paging.totalResults</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> The total number of the results matching the requested parameters.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["calls","1","files"],"host":["go2","vhdmedia","se"],"query":[{"disabled":true,"description":{"content":"<p>Results page to retrieve (0..N). Default: <code>0</code>.</p>\n","type":"text/plain"},"key":"page","value":""},{"disabled":true,"description":{"content":"<p>Number of records per page. Default: <code>20</code>.</p>\n","type":"text/plain"},"key":"size","value":""}],"variable":[]}},"response":[{"id":"5f173bc4-55b1-494a-8986-f86aa8ad5221","name":"200 OK","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/files","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","files"],"query":[{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"text","header":null,"cookie":[],"responseTime":null,"body":null},{"id":"2260e933-8d35-4579-be5e-b63be01b1421","name":"400 - Error responses","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/files","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","files"],"query":[{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"BAD_REQUEST\",\n      \"text\": \"Request is invalid.\"\n    }\n  }\n}"},{"id":"ca736768-aa5b-4999-8c17-71fe1b3e4b08","name":"401 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/files","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","files"],"query":[{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"0a4e98bf-b7eb-4376-b34a-e39067138dce","name":"403 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/files","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","files"],"query":[{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"168762fe-53c3-4777-9c00-d7666526a785","name":"429 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/files","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","files"],"query":[{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"a89075e2-a4b0-4981-9323-910bd27e3df4","name":"500 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/files","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","files"],"query":[{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"394b34ee-0f64-4234-9596-1f8a7bfc3152"},{"name":"Get audio file (Calls API)","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","if (!(pm.environment.get(\"callsFileId\") || \"\")) { skip(\"callsFileId is not set (an earlier request did not create it)\"); }"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});"],"type":"text/javascript","packages":{}}}],"id":"4d574ea5-bce0-4169-9230-987fbb52d9ee","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/calls/1/files/{{callsFileId}}","description":"<p>Get file.</p>\n<p>Get a single file.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>fileId</em></td>\n<td>String</td>\n<td><strong>Required.</strong> File ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>id</em></td>\n<td>String</td>\n<td>File ID.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td><strong>Required.</strong> File name.</td>\n</tr>\n<tr>\n<td><em>fileFormat</em></td>\n<td>String</td>\n<td><strong>Required.</strong> File format. One of: <code>MP3</code>, <code>WAV</code>, <code>MP4</code>.</td>\n</tr>\n<tr>\n<td><em>size</em></td>\n<td>Int</td>\n<td>File size in bytes.</td>\n</tr>\n<tr>\n<td><em>creationTime</em></td>\n<td>String</td>\n<td>File creation time.</td>\n</tr>\n<tr>\n<td><em>expirationTime</em></td>\n<td>String</td>\n<td>File expiration time.</td>\n</tr>\n<tr>\n<td><em>duration</em></td>\n<td>Int</td>\n<td>File duration in seconds.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["calls","1","files","{{callsFileId}}"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"60831374-aaf2-4492-ac68-6456fdbd9b6a","name":"200 OK","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/calls/1/files/{{callsFileId}}"},"status":"OK","code":200,"_postman_previewlanguage":"text","header":null,"cookie":[],"responseTime":null,"body":null},{"id":"98b404fa-a300-48fe-b33a-6bb018a0414a","name":"401 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/calls/1/files/{{callsFileId}}"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"0bb5044c-3324-4482-9791-94da02384887","name":"403 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/calls/1/files/{{callsFileId}}"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"6c930dc2-c73e-4240-ab75-66d215c3dfb7","name":"404 - Error responses","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/calls/1/files/{{callsFileId}}"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"NOT_FOUND\",\n      \"text\": \"Resource was not found.\"\n    }\n  }\n}"},{"id":"fad72cbd-706a-4a3b-b697-6bc78fd33a3f","name":"429 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/calls/1/files/{{callsFileId}}"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"6535e72f-dc81-4e5c-8c28-fbda6ebdc2af","name":"500 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/calls/1/files/{{callsFileId}}"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"4d574ea5-bce0-4169-9230-987fbb52d9ee"}],"id":"64d523bb-a7cf-4f5e-844f-c3bb985c1183","description":"<p>Audio files that calls can play. This store is shared with the IVR uploads, so a file uploaded in <strong>Upload IVR file</strong> is listed here too.</p>\n","_postman_id":"64d523bb-a7cf-4f5e-844f-c3bb985c1183"},{"name":"5 Call recordings","item":[{"name":"Get calls recordings","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"results\", \"paging\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","","pm.test(\"'results' is an array\", function () {","    pm.expect(responseBody[\"results\"]).to.be.an('array');","});"],"type":"text/javascript","packages":{}}}],"id":"47c6edab-0341-466d-a236-79862535569c","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/calls/1/recordings/calls","description":"<p>Get calls recordings.</p>\n<p>Get the recordings of calls with pagination.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>callId</em></td>\n<td>String</td>\n<td>Call ID.</td>\n</tr>\n<tr>\n<td><em>callsConfigurationId</em></td>\n<td>String</td>\n<td>Calls Configuration ID.</td>\n</tr>\n<tr>\n<td><em>applicationId</em></td>\n<td>String</td>\n<td>Application ID.</td>\n</tr>\n<tr>\n<td><em>entityId</em></td>\n<td>String</td>\n<td>Entity ID.</td>\n</tr>\n<tr>\n<td><em>endpointIdentifier</em></td>\n<td>String</td>\n<td>Endpoint identifier.</td>\n</tr>\n<tr>\n<td><em>startTimeAfter</em></td>\n<td>String</td>\n<td>Date and time when the (first) call recording started.</td>\n</tr>\n<tr>\n<td><em>endTimeBefore</em></td>\n<td>String</td>\n<td>Date and time when the (last) call recording ended.</td>\n</tr>\n<tr>\n<td><em>direction</em></td>\n<td>String</td>\n<td>Call direction. One of: <code>INBOUND</code>, <code>OUTBOUND</code>.</td>\n</tr>\n<tr>\n<td><em>endpointType</em></td>\n<td>String</td>\n<td>Endpoint type. One of: <code>PHONE</code>, <code>SIP</code>, <code>WEBRTC</code>, <code>VIBER</code>, <code>WHATSAPP</code>, <code>WEBSOCKET</code>.</td>\n</tr>\n<tr>\n<td><em>location</em></td>\n<td>String</td>\n<td>Recording location. One of: <code>SAO_PAULO</code>, <code>BOGOTA</code>, <code>FRANKFURT</code>, <code>JOHANNESBURG</code>, <code>NEW_YORK</code>, <code>PORTLAND</code>, <code>MOSCOW</code>, <code>SINGAPORE</code>, <code>ISTANBUL</code>, <code>KUALA_LUMPUR</code>, <code>JAKARTA</code>, <code>MUMBAI</code>, <code>HONG_KONG</code>, <code>RIYADH</code>, <code>CHENNAI</code>.</td>\n</tr>\n<tr>\n<td><em>page</em></td>\n<td>Int</td>\n<td>Results page to retrieve (0..N). Default: <code>0</code>.</td>\n</tr>\n<tr>\n<td><em>size</em></td>\n<td>Int</td>\n<td>Number of records per page. Default: <code>20</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results</em></td>\n<td>Array</td>\n<td>The list of the results for this page.</td>\n</tr>\n<tr>\n<td><em>results[].callId</em></td>\n<td>String</td>\n<td>Call ID.</td>\n</tr>\n<tr>\n<td><em>results[].endpoint</em></td>\n<td>Object</td>\n<td><strong>Required.</strong> Call endpoint. Represents a caller for the inbound calls and a callee for the outbound calls.</td>\n</tr>\n<tr>\n<td><em>results[].endpoint.type</em></td>\n<td>String</td>\n<td>One of: <code>PHONE</code>, <code>SIP</code>, <code>WEBRTC</code>, <code>VIBER</code>, <code>WHATSAPP</code>, <code>WEBSOCKET</code>.</td>\n</tr>\n<tr>\n<td><em>results[].direction</em></td>\n<td>String</td>\n<td>Call direction. One of: <code>INBOUND</code>, <code>OUTBOUND</code>.</td>\n</tr>\n<tr>\n<td><em>results[].files</em></td>\n<td>Array</td>\n<td>Call recording files.</td>\n</tr>\n<tr>\n<td><em>results[].files[].id</em></td>\n<td>String</td>\n<td>File ID.</td>\n</tr>\n<tr>\n<td><em>results[].files[].name</em></td>\n<td>String</td>\n<td><strong>Required.</strong> File name.</td>\n</tr>\n<tr>\n<td><em>results[].files[].fileFormat</em></td>\n<td>String</td>\n<td><strong>Required.</strong> File format. One of: <code>MP3</code>, <code>WAV</code>, <code>MP4</code>.</td>\n</tr>\n<tr>\n<td><em>results[].files[].size</em></td>\n<td>Int</td>\n<td>File size in bytes.</td>\n</tr>\n<tr>\n<td><em>results[].files[].creationTime</em></td>\n<td>String</td>\n<td>File creation time.</td>\n</tr>\n<tr>\n<td><em>results[].files[].duration</em></td>\n<td>Int</td>\n<td>File duration in seconds.</td>\n</tr>\n<tr>\n<td><em>results[].files[].startTime</em></td>\n<td>String</td>\n<td>Date and time when the recording started.</td>\n</tr>\n<tr>\n<td><em>results[].files[].endTime</em></td>\n<td>String</td>\n<td>Date and time when the recording ended.</td>\n</tr>\n<tr>\n<td><em>results[].files[].location</em></td>\n<td>String</td>\n<td>Location of recording file after processing. One of: <code>SFTP</code>, <code>HOSTED</code>.</td>\n</tr>\n<tr>\n<td><em>results[].files[].sftpUploadStatus</em></td>\n<td>String</td>\n<td>Indicates current status of the recording file being uploaded via SFTP. One of: <code>UPLOADING</code>, <code>UPLOADED</code>, <code>FAILED</code>.</td>\n</tr>\n<tr>\n<td><em>results[].files[].customData</em></td>\n<td>Object</td>\n<td>Custom data.</td>\n</tr>\n<tr>\n<td><em>results[].status</em></td>\n<td>String</td>\n<td>Status of call recording. One of: <code>SUCCESSFUL</code>, <code>PARTIALLY_FAILED</code>, <code>FAILED</code>.</td>\n</tr>\n<tr>\n<td><em>results[].reason</em></td>\n<td>String</td>\n<td>Reason for recording failure.</td>\n</tr>\n<tr>\n<td><em>results[].callsConfigurationId</em></td>\n<td>String</td>\n<td>Calls Configuration ID.</td>\n</tr>\n<tr>\n<td><em>results[].platform</em></td>\n<td>Object</td>\n<td>Platform options. For more details, see documentation.</td>\n</tr>\n<tr>\n<td><em>results[].platform.entityId</em></td>\n<td>String</td>\n<td>Required to use entity in a send request for outbound traffic. Returned in notification events. For more details, see documentation.</td>\n</tr>\n<tr>\n<td><em>results[].platform.applicationId</em></td>\n<td>String</td>\n<td>Required for application use in a send request for outbound traffic. Returned in notification events. For more details, see documentation.</td>\n</tr>\n<tr>\n<td><em>results[].startTime</em></td>\n<td>String</td>\n<td>Date and time when the (first) call recording started.</td>\n</tr>\n<tr>\n<td><em>results[].endTime</em></td>\n<td>String</td>\n<td>Date and time when the (last) call recording ended.</td>\n</tr>\n<tr>\n<td><em>paging</em></td>\n<td>Object</td>\n<td>Contains information about the page.</td>\n</tr>\n<tr>\n<td><em>paging.page</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Requested page number.</td>\n</tr>\n<tr>\n<td><em>paging.size</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Requested page size.</td>\n</tr>\n<tr>\n<td><em>paging.totalPages</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> The total number of pages of the results matching the requested parameters.</td>\n</tr>\n<tr>\n<td><em>paging.totalResults</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> The total number of the results matching the requested parameters.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["calls","1","recordings","calls"],"host":["go2","vhdmedia","se"],"query":[{"disabled":true,"description":{"content":"<p>Call ID.</p>\n","type":"text/plain"},"key":"callId","value":"{{callId}}"},{"disabled":true,"description":{"content":"<p>Calls Configuration ID.</p>\n","type":"text/plain"},"key":"callsConfigurationId","value":"{{callsConfigurationId}}"},{"disabled":true,"description":{"content":"<p>Application ID.</p>\n","type":"text/plain"},"key":"applicationId","value":""},{"disabled":true,"description":{"content":"<p>Entity ID.</p>\n","type":"text/plain"},"key":"entityId","value":""},{"disabled":true,"description":{"content":"<p>Endpoint identifier.</p>\n","type":"text/plain"},"key":"endpointIdentifier","value":""},{"disabled":true,"description":{"content":"<p>Date and time when the (first) call recording started.</p>\n","type":"text/plain"},"key":"startTimeAfter","value":""},{"disabled":true,"description":{"content":"<p>Date and time when the (last) call recording ended.</p>\n","type":"text/plain"},"key":"endTimeBefore","value":""},{"disabled":true,"description":{"content":"<p>Call direction.</p>\n","type":"text/plain"},"key":"direction","value":""},{"disabled":true,"description":{"content":"<p>Endpoint type.</p>\n","type":"text/plain"},"key":"endpointType","value":""},{"disabled":true,"description":{"content":"<p>Recording location.</p>\n","type":"text/plain"},"key":"location","value":""},{"disabled":true,"description":{"content":"<p>Results page to retrieve (0..N). Default: <code>0</code>.</p>\n","type":"text/plain"},"key":"page","value":""},{"disabled":true,"description":{"content":"<p>Number of records per page. Default: <code>20</code>.</p>\n","type":"text/plain"},"key":"size","value":""}],"variable":[]}},"response":[{"id":"8c735690-b279-4846-a285-907696ed9b04","name":"200 - Call recording page response.","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/recordings/calls","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","recordings","calls"],"query":[{"key":"callId","value":"{{callId}}","description":"Call ID.","disabled":true},{"key":"callsConfigurationId","value":"{{callsConfigurationId}}","description":"Calls Configuration ID.","disabled":true},{"key":"applicationId","value":"","description":"Application ID.","disabled":true},{"key":"entityId","value":"","description":"Entity ID.","disabled":true},{"key":"endpointIdentifier","value":"","description":"Endpoint identifier.","disabled":true},{"key":"startTimeAfter","value":"","description":"Date and time when the (first) call recording started.","disabled":true},{"key":"endTimeBefore","value":"","description":"Date and time when the (last) call recording ended.","disabled":true},{"key":"direction","value":"","description":"Call direction.","disabled":true},{"key":"endpointType","value":"","description":"Endpoint type.","disabled":true},{"key":"location","value":"","description":"Recording location.","disabled":true},{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"results\": [\n    {\n      \"callId\": \"d8d84155-3831-43fb-91c9-10b5a8d628a0\",\n      \"endpoint\": {\n        \"type\": \"PHONE\",\n        \"phoneNumber\": \"41793026834\"\n      },\n      \"direction\": \"INBOUND\",\n      \"files\": [\n        {\n          \"id\": \"d8d84155-3831-43fb-91c9-10b5a8d628a0\",\n          \"name\": \"d8d84155-3831-43fb-91c9-10b5a8d628a0_1652725357412.wav\",\n          \"fileFormat\": \"WAV\",\n          \"size\": 67564,\n          \"creationTime\": \"2026-01-15T12:00:00.150+0000\",\n          \"duration\": 10,\n          \"startTime\": \"2026-01-15T11:59:50.000+0000\",\n          \"endTime\": \"2026-01-15T12:00:00.000+0000\",\n          \"location\": \"HOSTED\",\n          \"customData\": {\n            \"key1\": \"value1\",\n            \"key2\": \"value2\"\n          }\n        }\n      ],\n      \"status\": \"SUCCESSFUL\"\n    },\n    {\n      \"callId\": \"ae024ad1-52e7-45d5-a5d2-cd7c809e03f8\",\n      \"endpoint\": {\n        \"type\": \"PHONE\",\n        \"phoneNumber\": \"41793026834\"\n      },\n      \"direction\": \"INBOUND\",\n      \"files\": [\n        {\n          \"id\": \"d8d84155-3831-43fb-91c9-10b5a8d628a0\",\n          \"name\": \"d8d84155-3831-43fb-91c9-10b5a8d628a0_1652725357412.wav\",\n          \"fileFormat\": \"WAV\",\n          \"size\": 67564,\n          \"creationTime\": \"2026-01-15T12:00:00.150+0000\",\n          \"duration\": 10,\n          \"startTime\": \"2026-01-15T11:59:50.000+0000\",\n          \"endTime\": \"2026-01-15T12:00:00.000+0000\",\n          \"location\": \"HOSTED\",\n          \"customData\": {\n            \"key1\": \"value1\",\n            \"key2\": \"value2\"\n          }\n        }\n      ],\n      \"status\": \"PARTIALLY_FAILED\",\n      \"reason\": \"Recording postprocessing failed\"\n    }\n  ],\n  \"paging\": {\n    \"page\": 0,\n    \"size\": 2,\n    \"totalPages\": 1,\n    \"totalResults\": 2\n  }\n}"},{"id":"446dcb5b-0b1a-49ac-be89-7167f5b4fbdf","name":"400 - Error responses","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/recordings/calls","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","recordings","calls"],"query":[{"key":"callId","value":"{{callId}}","description":"Call ID.","disabled":true},{"key":"callsConfigurationId","value":"{{callsConfigurationId}}","description":"Calls Configuration ID.","disabled":true},{"key":"applicationId","value":"","description":"Application ID.","disabled":true},{"key":"entityId","value":"","description":"Entity ID.","disabled":true},{"key":"endpointIdentifier","value":"","description":"Endpoint identifier.","disabled":true},{"key":"startTimeAfter","value":"","description":"Date and time when the (first) call recording started.","disabled":true},{"key":"endTimeBefore","value":"","description":"Date and time when the (last) call recording ended.","disabled":true},{"key":"direction","value":"","description":"Call direction.","disabled":true},{"key":"endpointType","value":"","description":"Endpoint type.","disabled":true},{"key":"location","value":"","description":"Recording location.","disabled":true},{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"BAD_REQUEST\",\n      \"text\": \"Request is invalid.\"\n    }\n  }\n}"},{"id":"641ba28e-d448-41b7-955f-d3206ee6faa5","name":"401 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/recordings/calls","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","recordings","calls"],"query":[{"key":"callId","value":"{{callId}}","description":"Call ID.","disabled":true},{"key":"callsConfigurationId","value":"{{callsConfigurationId}}","description":"Calls Configuration ID.","disabled":true},{"key":"applicationId","value":"","description":"Application ID.","disabled":true},{"key":"entityId","value":"","description":"Entity ID.","disabled":true},{"key":"endpointIdentifier","value":"","description":"Endpoint identifier.","disabled":true},{"key":"startTimeAfter","value":"","description":"Date and time when the (first) call recording started.","disabled":true},{"key":"endTimeBefore","value":"","description":"Date and time when the (last) call recording ended.","disabled":true},{"key":"direction","value":"","description":"Call direction.","disabled":true},{"key":"endpointType","value":"","description":"Endpoint type.","disabled":true},{"key":"location","value":"","description":"Recording location.","disabled":true},{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"1b7a5af9-715e-4189-b323-27285d58aaa8","name":"403 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/recordings/calls","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","recordings","calls"],"query":[{"key":"callId","value":"{{callId}}","description":"Call ID.","disabled":true},{"key":"callsConfigurationId","value":"{{callsConfigurationId}}","description":"Calls Configuration ID.","disabled":true},{"key":"applicationId","value":"","description":"Application ID.","disabled":true},{"key":"entityId","value":"","description":"Entity ID.","disabled":true},{"key":"endpointIdentifier","value":"","description":"Endpoint identifier.","disabled":true},{"key":"startTimeAfter","value":"","description":"Date and time when the (first) call recording started.","disabled":true},{"key":"endTimeBefore","value":"","description":"Date and time when the (last) call recording ended.","disabled":true},{"key":"direction","value":"","description":"Call direction.","disabled":true},{"key":"endpointType","value":"","description":"Endpoint type.","disabled":true},{"key":"location","value":"","description":"Recording location.","disabled":true},{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"b9fb1424-7b1e-45dc-8d3a-94108351d1e0","name":"429 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/recordings/calls","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","recordings","calls"],"query":[{"key":"callId","value":"{{callId}}","description":"Call ID.","disabled":true},{"key":"callsConfigurationId","value":"{{callsConfigurationId}}","description":"Calls Configuration ID.","disabled":true},{"key":"applicationId","value":"","description":"Application ID.","disabled":true},{"key":"entityId","value":"","description":"Entity ID.","disabled":true},{"key":"endpointIdentifier","value":"","description":"Endpoint identifier.","disabled":true},{"key":"startTimeAfter","value":"","description":"Date and time when the (first) call recording started.","disabled":true},{"key":"endTimeBefore","value":"","description":"Date and time when the (last) call recording ended.","disabled":true},{"key":"direction","value":"","description":"Call direction.","disabled":true},{"key":"endpointType","value":"","description":"Endpoint type.","disabled":true},{"key":"location","value":"","description":"Recording location.","disabled":true},{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"6228b3f6-d792-4242-bb08-2d469e93e5cc","name":"500 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/calls/1/recordings/calls","protocol":"https","host":["go2","vhdmedia","se"],"path":["calls","1","recordings","calls"],"query":[{"key":"callId","value":"{{callId}}","description":"Call ID.","disabled":true},{"key":"callsConfigurationId","value":"{{callsConfigurationId}}","description":"Calls Configuration ID.","disabled":true},{"key":"applicationId","value":"","description":"Application ID.","disabled":true},{"key":"entityId","value":"","description":"Entity ID.","disabled":true},{"key":"endpointIdentifier","value":"","description":"Endpoint identifier.","disabled":true},{"key":"startTimeAfter","value":"","description":"Date and time when the (first) call recording started.","disabled":true},{"key":"endTimeBefore","value":"","description":"Date and time when the (last) call recording ended.","disabled":true},{"key":"direction","value":"","description":"Call direction.","disabled":true},{"key":"endpointType","value":"","description":"Endpoint type.","disabled":true},{"key":"location","value":"","description":"Recording location.","disabled":true},{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"47c6edab-0341-466d-a236-79862535569c"}],"id":"3f5b984d-a8d1-4a84-90b4-49f356305706","description":"<p>Recordings of calls made with the Calls API.</p>\n","_postman_id":"3f5b984d-a8d1-4a84-90b4-49f356305706"},{"name":"6 Cleanup","item":[{"name":"Delete calls configuration","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","if (!(pm.environment.get(\"callsConfigurationId\") || \"\")) { skip(\"callsConfigurationId is not set (an earlier request did not create it)\"); }"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"id\", \"name\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});"],"type":"text/javascript","packages":{}}}],"id":"ab07d01b-a229-44c7-a69b-fed6f7d0d1b7","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/calls/1/configurations/{{callsConfigurationId}}","description":"<p>Delete calls configuration.</p>\n<p>Delete calls configuration.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>callsConfigurationId</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Calls configuration ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>id</em></td>\n<td>String</td>\n<td>Calls configuration ID.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>Calls configuration name.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["calls","1","configurations","{{callsConfigurationId}}"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"89ceba44-6f73-4d30-9941-78320fd6d18f","name":"200 - Delete response example","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/calls/1/configurations/{{callsConfigurationId}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": \"63467c6e2885a5389ba11d80\",\n  \"name\": \"Calls configuration\"\n}"},{"id":"c452d340-d049-4ee4-b58f-3bf7aec8c64e","name":"401 - Example","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/calls/1/configurations/{{callsConfigurationId}}"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"b65060f4-8bcb-474d-acca-84a529b57764","name":"403 - Example","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/calls/1/configurations/{{callsConfigurationId}}"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"3fc2e6bd-3d96-428b-9d32-be7c323327d8","name":"404 - Error responses","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/calls/1/configurations/{{callsConfigurationId}}"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"NOT_FOUND\",\n      \"text\": \"Resource was not found.\"\n    }\n  }\n}"},{"id":"6132a8e3-21e9-4824-91f2-70c9b21e1489","name":"429 - Example","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/calls/1/configurations/{{callsConfigurationId}}"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"6ec21840-ee61-4462-9b49-cffc77dafb91","name":"500 - Example","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/calls/1/configurations/{{callsConfigurationId}}"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"ab07d01b-a229-44c7-a69b-fed6f7d0d1b7"}],"id":"c672aa34-2390-44f1-a4d5-348fc72ca0f4","description":"<p>Removes the sample configuration after the requests above have used it.</p>\n","_postman_id":"c672aa34-2390-44f1-a4d5-348fc72ca0f4"}],"id":"0734d5f9-ba9e-41bc-8a8f-81783b2139ea","description":"<p>Calls configurations, active calls and call history, conferences, audio files and call recordings. The requests run in order: create a configuration, use it, and delete it at the end. Placing calls through the Calls API (creating calls and bulks of calls) is not included: it needs a subscription on the calls configuration that is not available on this account.</p>\n","_postman_id":"0734d5f9-ba9e-41bc-8a8f-81783b2139ea"},{"name":"CALL LINKS","item":[{"name":"Create call link configuration","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","(function () {","    api(\"GET\", \"/call-link/1/configs\", null, function (e, r) {","        var list = ((jsonOf(r) || {}).results || []).filter(function (c) { return c.name === \"Sample call link configuration\"; });","        (function next(i) { if (i >= list.length) { return; } api(\"DELETE\", \"/call-link/1/configs/\" + list[i].id, null, function () { next(i + 1); }); })(0);","    });","})();"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 201\", function () {","    pm.expect(pm.response.code).to.be.oneOf([201]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"id\", \"name\", \"isDefault\", \"initialOptions\", \"callOptions\", \"theme\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","","pm.environment.set(\"callLinkConfigId\", pm.response.json().id);"],"type":"text/javascript","packages":{}}}],"id":"b28a8d65-976b-43d9-b780-fb2facab4527","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Sample call link configuration\",\n  \"initialOptions\": {\n    \"audio\": true,\n    \"video\": false,\n    \"muted\": false,\n    \"cameraFacingMode\": \"FRONT\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/call-link/1/configs","description":"<p>Create configuration.</p>\n<p>Use this method to add a new call link configuration.</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Configuration name.</td>\n</tr>\n<tr>\n<td><em>initialOptions</em></td>\n<td>Object</td>\n<td>User options available when a user opens a call link page before initiating the call. Depending on the fields, certain options for the call will be shown to a user.</td>\n</tr>\n<tr>\n<td><em>initialOptions.audio</em></td>\n<td>Boolean</td>\n<td>User will be able to initiate the audio call.</td>\n</tr>\n<tr>\n<td><em>initialOptions.video</em></td>\n<td>Boolean</td>\n<td>User will be able to initiate the video call.</td>\n</tr>\n<tr>\n<td><em>initialOptions.muted</em></td>\n<td>Boolean</td>\n<td>User will be muted once the call is established.</td>\n</tr>\n<tr>\n<td><em>initialOptions.settings</em></td>\n<td>Boolean</td>\n<td>User will be able to configure settings before a call.</td>\n</tr>\n<tr>\n<td><em>initialOptions.cameraFacingMode</em></td>\n<td>String</td>\n<td>In the case of a video call on mobile phones camera will be back or front depending on this value. It is 'FRONT' by default. One of: <code>FRONT</code>, <code>BACK</code>.</td>\n</tr>\n<tr>\n<td><em>callOptions</em></td>\n<td>Object</td>\n<td>User options available during a call. Depending on the fields, certain options for a call will be shown to a user.</td>\n</tr>\n<tr>\n<td><em>callOptions.mute</em></td>\n<td>Boolean</td>\n<td>User will be able to mute themselves during the call.</td>\n</tr>\n<tr>\n<td><em>callOptions.screenShare</em></td>\n<td>Boolean</td>\n<td>User will be able to share the screen during the call.</td>\n</tr>\n<tr>\n<td><em>callOptions.camera</em></td>\n<td>Boolean</td>\n<td>User will be able to toggle the video during the call.</td>\n</tr>\n<tr>\n<td><em>callOptions.switchCameraFacingMode</em></td>\n<td>Boolean</td>\n<td>User will be able to switch between front-facing and back camera during the call.</td>\n</tr>\n<tr>\n<td><em>callOptions.dialPad</em></td>\n<td>Boolean</td>\n<td>User will be able to use dial pad for DTMF, during the call.</td>\n</tr>\n<tr>\n<td><em>callOptions.chat</em></td>\n<td>Boolean</td>\n<td>Users will be able to open the chat box and send and receive text messages that are visible to all the participants. This is applicable only for the ROOM call type. Messages sent before joining the room are not visible.</td>\n</tr>\n<tr>\n<td><em>callOptions.settings</em></td>\n<td>Boolean</td>\n<td>User will be able to access settings during the call.</td>\n</tr>\n<tr>\n<td><em>callOptions.recordingIndicator</em></td>\n<td>Boolean</td>\n<td>User will be able to see if the call is being recorded.</td>\n</tr>\n<tr>\n<td><em>theme</em></td>\n<td>Object</td>\n<td>Call link theme-specific configuration settings. Use it to add image, color, and text selections to customize a call link page.</td>\n</tr>\n<tr>\n<td><em>theme.images</em></td>\n<td>Object</td>\n<td>Enumerate images shown on a call link page. Once an image is uploaded (by using the image upload API) a unique ID returned in that response can be used to add a background image or a logo image.</td>\n</tr>\n<tr>\n<td><em>theme.images.logoImageId</em></td>\n<td>String</td>\n<td>ID of an image shown as a logo on a call link page.</td>\n</tr>\n<tr>\n<td><em>theme.images.backgroundImageId</em></td>\n<td>String</td>\n<td>ID of an image shown as a background on a call link page.</td>\n</tr>\n<tr>\n<td><em>theme.messages</em></td>\n<td>Object</td>\n<td>Call link messaging settings.</td>\n</tr>\n<tr>\n<td><em>theme.messages.welcomeText</em></td>\n<td>String</td>\n<td>Message shown when a call link is opened.</td>\n</tr>\n<tr>\n<td><em>theme.messages.inactiveText</em></td>\n<td>String</td>\n<td>Message shown when a call link is not active.</td>\n</tr>\n<tr>\n<td><em>theme.messages.expirationText</em></td>\n<td>String</td>\n<td>Message shown when a call link is expired.</td>\n</tr>\n<tr>\n<td><em>theme.colors</em></td>\n<td>Object</td>\n<td>Colors settings. If not specified, the default colors will be used.</td>\n</tr>\n<tr>\n<td><em>theme.colors.primary</em></td>\n<td>String</td>\n<td>Primary color of a theme in the hexadecimal format.</td>\n</tr>\n<tr>\n<td><em>theme.colors.primaryText</em></td>\n<td>String</td>\n<td>Primary color of a text in the hexadecimal format.</td>\n</tr>\n<tr>\n<td><em>theme.colors.background</em></td>\n<td>String</td>\n<td>Background color in the hexadecimal format.</td>\n</tr>\n<tr>\n<td><em>theme.layouts</em></td>\n<td>Array</td>\n<td>Represents layout during the call.When GRID layout is selected, multiple video streams are displayed simultaneously and user can spotlight specific video stream.When SOLO layout is selected, an user can see only his video streams.If there are more than one layout in this list, the first one will be initially selected, and users can change it during the call.The default layout will be set to GRID.</td>\n</tr>\n<tr>\n<td><em>theme.localization</em></td>\n<td>Object</td>\n<td>If the localization object is not defined, English will be used. If the localization type is set to PRESET, the language code is mandatory to be defined to one of the predefined values.If the localization type is set to BROWSER_DETECTED and the browser language is one of the languages that could be set in PRESET type, then that language will be used. Otherwise, English will be used.</td>\n</tr>\n<tr>\n<td><em>theme.localization.type</em></td>\n<td>String</td>\n<td>One of: <code>BROWSER_DETECTED</code>, <code>PRESET</code>.</td>\n</tr>\n<tr>\n<td><em>isDefault</em></td>\n<td>Boolean</td>\n<td>Indicates whether the specific call link configuration is the default one and used with any call link without a callLinkConfigId. Only one configuration can be default.If you don't have a configuration, the basic VHD theme with default values and minimal options will be used.If you want to use another configuration, set this value to <code>true</code> for the call link config you wish as default.</td>\n</tr>\n<tr>\n<td><em>subdomainId</em></td>\n<td>String</td>\n<td>Subdomain to use for every call link generated for this configuration.If not defined, no subdomain will be used.</td>\n</tr>\n<tr>\n<td><em>webhook</em></td>\n<td>Object</td>\n<td>Webhook triggered when there is a call event.</td>\n</tr>\n<tr>\n<td><em>webhook.url</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Your webhook URL.</td>\n</tr>\n<tr>\n<td><em>webhook.securityConfig</em></td>\n<td>Object</td>\n<td>Security settings object holding the authentication settings necessary to access your webhook.</td>\n</tr>\n<tr>\n<td><em>webhook.securityConfig.type</em></td>\n<td>String</td>\n<td>One of: <code>BASIC</code>, <code>HMAC</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>201 Created</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>id</em></td>\n<td>String</td>\n<td>Configuration ID. Once a call link is created, this value might be sent in the request as one specific call link configuration to be used by the call link.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>Configuration name or description. It doesn't have to be unique.</td>\n</tr>\n<tr>\n<td><em>isDefault</em></td>\n<td>Boolean</td>\n<td>When you create call link without callLinkConfigId, the one marked as default will be used. Only one configuration can be default.If you don't have a configuration, the basic VHD theme with default values and minimal options will be used.If you want to set another configuration as default, specify its value when adding or updating it.</td>\n</tr>\n<tr>\n<td><em>initialOptions</em></td>\n<td>Object</td>\n<td>User options available when a user opens a call link page before initiating the call. Depending on the fields, certain options for the call will be shown to a user.</td>\n</tr>\n<tr>\n<td><em>initialOptions.audio</em></td>\n<td>Boolean</td>\n<td>User will be able to initiate the audio call.</td>\n</tr>\n<tr>\n<td><em>initialOptions.video</em></td>\n<td>Boolean</td>\n<td>User will be able to initiate the video call.</td>\n</tr>\n<tr>\n<td><em>initialOptions.muted</em></td>\n<td>Boolean</td>\n<td>User will be muted once the call is established.</td>\n</tr>\n<tr>\n<td><em>initialOptions.settings</em></td>\n<td>Boolean</td>\n<td>User will be able to configure settings before a call.</td>\n</tr>\n<tr>\n<td><em>initialOptions.cameraFacingMode</em></td>\n<td>String</td>\n<td>In the case of a video call on mobile phones camera will be back or front depending on this value. It is 'FRONT' by default. One of: <code>FRONT</code>, <code>BACK</code>.</td>\n</tr>\n<tr>\n<td><em>callOptions</em></td>\n<td>Object</td>\n<td>User options available during a call. Depending on the fields, certain options for a call will be shown to a user.</td>\n</tr>\n<tr>\n<td><em>callOptions.mute</em></td>\n<td>Boolean</td>\n<td>User will be able to mute themselves during the call.</td>\n</tr>\n<tr>\n<td><em>callOptions.screenShare</em></td>\n<td>Boolean</td>\n<td>User will be able to share the screen during the call.</td>\n</tr>\n<tr>\n<td><em>callOptions.camera</em></td>\n<td>Boolean</td>\n<td>User will be able to toggle the video during the call.</td>\n</tr>\n<tr>\n<td><em>callOptions.switchCameraFacingMode</em></td>\n<td>Boolean</td>\n<td>User will be able to switch between front-facing and back camera during the call.</td>\n</tr>\n<tr>\n<td><em>callOptions.dialPad</em></td>\n<td>Boolean</td>\n<td>User will be able to use dial pad for DTMF, during the call.</td>\n</tr>\n<tr>\n<td><em>callOptions.chat</em></td>\n<td>Boolean</td>\n<td>Users will be able to open the chat box and send and receive text messages that are visible to all the participants. This is applicable only for the ROOM call type. Messages sent before joining the room are not visible.</td>\n</tr>\n<tr>\n<td><em>callOptions.settings</em></td>\n<td>Boolean</td>\n<td>User will be able to access settings during the call.</td>\n</tr>\n<tr>\n<td><em>callOptions.recordingIndicator</em></td>\n<td>Boolean</td>\n<td>User will be able to see if the call is being recorded.</td>\n</tr>\n<tr>\n<td><em>theme</em></td>\n<td>Object</td>\n<td>Call link theme-specific configuration settings. Use it to add image, color, and text selections to customize a call link page.</td>\n</tr>\n<tr>\n<td><em>theme.images</em></td>\n<td>Object</td>\n<td>Enumerate images shown on a call link page. Once an image is uploaded (by using the image upload API) a unique ID returned in that response can be used to add a background image or a logo image.</td>\n</tr>\n<tr>\n<td><em>theme.images.logoImageId</em></td>\n<td>String</td>\n<td>ID of an image shown as a logo on a call link page.</td>\n</tr>\n<tr>\n<td><em>theme.images.backgroundImageId</em></td>\n<td>String</td>\n<td>ID of an image shown as a background on a call link page.</td>\n</tr>\n<tr>\n<td><em>theme.messages</em></td>\n<td>Object</td>\n<td>Call link messaging settings.</td>\n</tr>\n<tr>\n<td><em>theme.messages.welcomeText</em></td>\n<td>String</td>\n<td>Message shown when a call link is opened.</td>\n</tr>\n<tr>\n<td><em>theme.messages.inactiveText</em></td>\n<td>String</td>\n<td>Message shown when a call link is not active.</td>\n</tr>\n<tr>\n<td><em>theme.messages.expirationText</em></td>\n<td>String</td>\n<td>Message shown when a call link is expired.</td>\n</tr>\n<tr>\n<td><em>theme.colors</em></td>\n<td>Object</td>\n<td>Colors settings. If not specified, the default colors will be used.</td>\n</tr>\n<tr>\n<td><em>theme.colors.primary</em></td>\n<td>String</td>\n<td>Primary color of a theme in the hexadecimal format.</td>\n</tr>\n<tr>\n<td><em>theme.colors.primaryText</em></td>\n<td>String</td>\n<td>Primary color of a text in the hexadecimal format.</td>\n</tr>\n<tr>\n<td><em>theme.colors.background</em></td>\n<td>String</td>\n<td>Background color in the hexadecimal format.</td>\n</tr>\n<tr>\n<td><em>theme.layouts</em></td>\n<td>Array</td>\n<td>Represents layout during the call.When GRID layout is selected, multiple video streams are displayed simultaneously and user can spotlight specific video stream.When SOLO layout is selected, an user can see only his video streams.If there are more than one layout in this list, the first one will be initially selected, and users can change it during the call.The default layout will be set to GRID.</td>\n</tr>\n<tr>\n<td><em>theme.localization</em></td>\n<td>Object</td>\n<td>If the localization object is not defined, English will be used. If the localization type is set to PRESET, the language code is mandatory to be defined to one of the predefined values.If the localization type is set to BROWSER_DETECTED and the browser language is one of the languages that could be set in PRESET type, then that language will be used. Otherwise, English will be used.</td>\n</tr>\n<tr>\n<td><em>theme.localization.type</em></td>\n<td>String</td>\n<td>One of: <code>BROWSER_DETECTED</code>, <code>PRESET</code>.</td>\n</tr>\n<tr>\n<td><em>subdomainId</em></td>\n<td>String</td>\n<td>Id of the subdomain that will be set on every call link generated with this configuration. If undefined, call links will be generated without a subdomain.</td>\n</tr>\n<tr>\n<td><em>webhook</em></td>\n<td>Object</td>\n<td>Webhook triggered when there is a call event.</td>\n</tr>\n<tr>\n<td><em>webhook.url</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Your webhook URL.</td>\n</tr>\n<tr>\n<td><em>webhook.securityConfig</em></td>\n<td>Object</td>\n<td>Security settings object holding the authentication settings necessary to access your webhook.</td>\n</tr>\n<tr>\n<td><em>webhook.securityConfig.type</em></td>\n<td>String</td>\n<td>One of: <code>BASIC</code>, <code>HMAC</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["call-link","1","configs"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"e08807e3-9acf-492b-8c83-1b18f6c348b3","name":"201 - Call Link Config Response","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Company name\",\n  \"initialOptions\": {\n    \"audio\": true,\n    \"video\": false,\n    \"muted\": false,\n    \"cameraFacingMode\": \"FRONT\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/call-link/1/configs"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": \"638dbdc6ecede164c3799d04\",\n  \"name\": \"Company name\",\n  \"isDefault\": true,\n  \"initialOptions\": {\n    \"audio\": true,\n    \"video\": false,\n    \"muted\": false,\n    \"cameraFacingMode\": \"FRONT\"\n  },\n  \"callOptions\": {\n    \"mute\": true,\n    \"screenShare\": true,\n    \"switchCameraFacingMode\": true,\n    \"dialPad\": true\n  },\n  \"theme\": {\n    \"images\": {\n      \"logoImageId\": \"638dbe28ecede164c3799d06\",\n      \"backgroundImageId\": \"638dbe0cecede164c3799d05\"\n    },\n    \"messages\": {\n      \"welcomeText\": \"Call link page\",\n      \"inactiveText\": \"This link is no longer active.\",\n      \"expirationText\": \"This link has expired\"\n    },\n    \"colors\": {\n      \"primary\": \"D8D8D8\",\n      \"primaryText\": \"242424\",\n      \"background\": \"FFFFFF\"\n    }\n  }\n}"},{"id":"5a9e852d-3b6e-4f57-8879-9d6b978230ef","name":"400 - Error responses","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Company name\",\n  \"initialOptions\": {\n    \"audio\": true,\n    \"video\": false,\n    \"muted\": false,\n    \"cameraFacingMode\": \"FRONT\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/call-link/1/configs"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"BAD_REQUEST\",\n      \"text\": \"Bad request\",\n      \"validationErrors\": {\n        \"field\": [\n          \"field must not be null.\"\n        ]\n      }\n    }\n  }\n}"},{"id":"d46f8967-aef1-4cd1-a295-f8be7a480924","name":"401 - Example","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Company name\",\n  \"initialOptions\": {\n    \"audio\": true,\n    \"video\": false,\n    \"muted\": false,\n    \"cameraFacingMode\": \"FRONT\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/call-link/1/configs"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"1c64ba73-5d7e-4bd8-a2cb-1e8d0c37b31b","name":"403 - Example","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Company name\",\n  \"initialOptions\": {\n    \"audio\": true,\n    \"video\": false,\n    \"muted\": false,\n    \"cameraFacingMode\": \"FRONT\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/call-link/1/configs"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"6f8bc066-0c5d-4ba7-ab1b-ea7f71c66c53","name":"429 - Example","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Company name\",\n  \"initialOptions\": {\n    \"audio\": true,\n    \"video\": false,\n    \"muted\": false,\n    \"cameraFacingMode\": \"FRONT\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/call-link/1/configs"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"98eb8938-acc5-4aed-837a-5d4da8253896","name":"500 - Example","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Company name\",\n  \"initialOptions\": {\n    \"audio\": true,\n    \"video\": false,\n    \"muted\": false,\n    \"cameraFacingMode\": \"FRONT\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/call-link/1/configs"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"b28a8d65-976b-43d9-b780-fb2facab4527"},{"name":"Get call link configurations","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"results\", \"paging\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","","pm.test(\"'results' is an array\", function () {","    pm.expect(responseBody[\"results\"]).to.be.an('array');","});"],"type":"text/javascript","packages":{}}}],"id":"1567151d-9afc-414c-82dc-e3faa9e06c5d","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/configs","description":"<p>Get configurations.</p>\n<p>Use this method to retrieve all call link configurations.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>page</em></td>\n<td>Int</td>\n<td>Results page to retrieve (0..N). Default: <code>0</code>.</td>\n</tr>\n<tr>\n<td><em>size</em></td>\n<td>Int</td>\n<td>Number of records per page. Default: <code>20</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results</em></td>\n<td>Array</td>\n<td>The list of the results for this page.</td>\n</tr>\n<tr>\n<td><em>results[].id</em></td>\n<td>String</td>\n<td>Configuration ID. Once a call link is created, this value might be sent in the request as one specific call link configuration to be used by the call link.</td>\n</tr>\n<tr>\n<td><em>results[].name</em></td>\n<td>String</td>\n<td>Configuration name or description. It doesn't have to be unique.</td>\n</tr>\n<tr>\n<td><em>results[].isDefault</em></td>\n<td>Boolean</td>\n<td>When you create call link without callLinkConfigId, the one marked as default will be used. Only one configuration can be default.If you don't have a configuration, the basic VHD theme with default values and minimal options will be used.If you want to set another configuration as default, specify its value when adding or updating it.</td>\n</tr>\n<tr>\n<td><em>results[].initialOptions</em></td>\n<td>Object</td>\n<td>User options available when a user opens a call link page before initiating the call. Depending on the fields, certain options for the call will be shown to a user.</td>\n</tr>\n<tr>\n<td><em>results[].initialOptions.audio</em></td>\n<td>Boolean</td>\n<td>User will be able to initiate the audio call.</td>\n</tr>\n<tr>\n<td><em>results[].initialOptions.video</em></td>\n<td>Boolean</td>\n<td>User will be able to initiate the video call.</td>\n</tr>\n<tr>\n<td><em>results[].initialOptions.muted</em></td>\n<td>Boolean</td>\n<td>User will be muted once the call is established.</td>\n</tr>\n<tr>\n<td><em>results[].initialOptions.settings</em></td>\n<td>Boolean</td>\n<td>User will be able to configure settings before a call.</td>\n</tr>\n<tr>\n<td><em>results[].initialOptions.cameraFacingMode</em></td>\n<td>String</td>\n<td>In the case of a video call on mobile phones camera will be back or front depending on this value. It is 'FRONT' by default. One of: <code>FRONT</code>, <code>BACK</code>.</td>\n</tr>\n<tr>\n<td><em>results[].callOptions</em></td>\n<td>Object</td>\n<td>User options available during a call. Depending on the fields, certain options for a call will be shown to a user.</td>\n</tr>\n<tr>\n<td><em>results[].callOptions.mute</em></td>\n<td>Boolean</td>\n<td>User will be able to mute themselves during the call.</td>\n</tr>\n<tr>\n<td><em>results[].callOptions.screenShare</em></td>\n<td>Boolean</td>\n<td>User will be able to share the screen during the call.</td>\n</tr>\n<tr>\n<td><em>results[].callOptions.camera</em></td>\n<td>Boolean</td>\n<td>User will be able to toggle the video during the call.</td>\n</tr>\n<tr>\n<td><em>results[].callOptions.switchCameraFacingMode</em></td>\n<td>Boolean</td>\n<td>User will be able to switch between front-facing and back camera during the call.</td>\n</tr>\n<tr>\n<td><em>results[].callOptions.dialPad</em></td>\n<td>Boolean</td>\n<td>User will be able to use dial pad for DTMF, during the call.</td>\n</tr>\n<tr>\n<td><em>results[].callOptions.chat</em></td>\n<td>Boolean</td>\n<td>Users will be able to open the chat box and send and receive text messages that are visible to all the participants. This is applicable only for the ROOM call type. Messages sent before joining the room are not visible.</td>\n</tr>\n<tr>\n<td><em>results[].callOptions.settings</em></td>\n<td>Boolean</td>\n<td>User will be able to access settings during the call.</td>\n</tr>\n<tr>\n<td><em>results[].callOptions.recordingIndicator</em></td>\n<td>Boolean</td>\n<td>User will be able to see if the call is being recorded.</td>\n</tr>\n<tr>\n<td><em>results[].theme</em></td>\n<td>Object</td>\n<td>Call link theme-specific configuration settings. Use it to add image, color, and text selections to customize a call link page.</td>\n</tr>\n<tr>\n<td><em>results[].theme.images</em></td>\n<td>Object</td>\n<td>Enumerate images shown on a call link page. Once an image is uploaded (by using the image upload API) a unique ID returned in that response can be used to add a background image or a logo image.</td>\n</tr>\n<tr>\n<td><em>results[].theme.images.logoImageId</em></td>\n<td>String</td>\n<td>ID of an image shown as a logo on a call link page.</td>\n</tr>\n<tr>\n<td><em>results[].theme.images.backgroundImageId</em></td>\n<td>String</td>\n<td>ID of an image shown as a background on a call link page.</td>\n</tr>\n<tr>\n<td><em>results[].theme.messages</em></td>\n<td>Object</td>\n<td>Call link messaging settings.</td>\n</tr>\n<tr>\n<td><em>results[].theme.messages.welcomeText</em></td>\n<td>String</td>\n<td>Message shown when a call link is opened.</td>\n</tr>\n<tr>\n<td><em>results[].theme.messages.inactiveText</em></td>\n<td>String</td>\n<td>Message shown when a call link is not active.</td>\n</tr>\n<tr>\n<td><em>results[].theme.messages.expirationText</em></td>\n<td>String</td>\n<td>Message shown when a call link is expired.</td>\n</tr>\n<tr>\n<td><em>results[].theme.colors</em></td>\n<td>Object</td>\n<td>Colors settings. If not specified, the default colors will be used.</td>\n</tr>\n<tr>\n<td><em>results[].theme.colors.primary</em></td>\n<td>String</td>\n<td>Primary color of a theme in the hexadecimal format.</td>\n</tr>\n<tr>\n<td><em>results[].theme.colors.primaryText</em></td>\n<td>String</td>\n<td>Primary color of a text in the hexadecimal format.</td>\n</tr>\n<tr>\n<td><em>results[].theme.colors.background</em></td>\n<td>String</td>\n<td>Background color in the hexadecimal format.</td>\n</tr>\n<tr>\n<td><em>results[].theme.layouts</em></td>\n<td>Array</td>\n<td>Represents layout during the call.When GRID layout is selected, multiple video streams are displayed simultaneously and user can spotlight specific video stream.When SOLO layout is selected, an user can see only his video streams.If there are more than one layout in this list, the first one will be initially selected, and users can change it during the call.The default layout will be set to GRID.</td>\n</tr>\n<tr>\n<td><em>results[].theme.localization</em></td>\n<td>Object</td>\n<td>If the localization object is not defined, English will be used. If the localization type is set to PRESET, the language code is mandatory to be defined to one of the predefined values.If the localization type is set to BROWSER_DETECTED and the browser language is one of the languages that could be set in PRESET type, then that language will be used. Otherwise, English will be used.</td>\n</tr>\n<tr>\n<td><em>results[].theme.localization.type</em></td>\n<td>String</td>\n<td>One of: <code>BROWSER_DETECTED</code>, <code>PRESET</code>.</td>\n</tr>\n<tr>\n<td><em>results[].subdomainId</em></td>\n<td>String</td>\n<td>Id of the subdomain that will be set on every call link generated with this configuration. If undefined, call links will be generated without a subdomain.</td>\n</tr>\n<tr>\n<td><em>results[].webhook</em></td>\n<td>Object</td>\n<td>Webhook triggered when there is a call event.</td>\n</tr>\n<tr>\n<td><em>results[].webhook.url</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Your webhook URL.</td>\n</tr>\n<tr>\n<td><em>results[].webhook.securityConfig</em></td>\n<td>Object</td>\n<td>Security settings object holding the authentication settings necessary to access your webhook.</td>\n</tr>\n<tr>\n<td><em>results[].webhook.securityConfig.type</em></td>\n<td>String</td>\n<td>One of: <code>BASIC</code>, <code>HMAC</code>.</td>\n</tr>\n<tr>\n<td><em>paging</em></td>\n<td>Object</td>\n<td>Contains information about the page.</td>\n</tr>\n<tr>\n<td><em>paging.page</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Requested page number.</td>\n</tr>\n<tr>\n<td><em>paging.size</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Requested page size.</td>\n</tr>\n<tr>\n<td><em>paging.totalPages</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> The total number of pages of the results matching the requested parameters.</td>\n</tr>\n<tr>\n<td><em>paging.totalResults</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> The total number of the results matching the requested parameters.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["call-link","1","configs"],"host":["go2","vhdmedia","se"],"query":[{"disabled":true,"description":{"content":"<p>Results page to retrieve (0..N). Default: <code>0</code>.</p>\n","type":"text/plain"},"key":"page","value":""},{"disabled":true,"description":{"content":"<p>Number of records per page. Default: <code>20</code>.</p>\n","type":"text/plain"},"key":"size","value":""}],"variable":[]}},"response":[{"id":"184b5285-61a2-4747-8bd8-75a34807663a","name":"200 - Call Link Config Page Response","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/call-link/1/configs","protocol":"https","host":["go2","vhdmedia","se"],"path":["call-link","1","configs"],"query":[{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"results\": [\n    {\n      \"name\": \"Company name\",\n      \"initialOptions\": {\n        \"audio\": true,\n        \"video\": false,\n        \"muted\": false,\n        \"cameraFacingMode\": \"FRONT\"\n      },\n      \"callOptions\": {\n        \"mute\": true,\n        \"screenShare\": true,\n        \"switchCameraFacingMode\": true,\n        \"dialPad\": true\n      },\n      \"theme\": {\n        \"images\": {\n          \"logoImageId\": \"638dbe28ecede164c3799d06\",\n          \"backgroundImageId\": \"638dbe0cecede164c3799d05\"\n        },\n        \"messages\": {\n          \"welcomeText\": \"Call link page\",\n          \"inactiveText\": \"This link is no longer active.\",\n          \"expirationText\": \"This link has expired\"\n        },\n        \"colors\": {\n          \"primary\": \"D8D8D8\",\n          \"primaryText\": \"242424\",\n          \"background\": \"FFFFFF\"\n        }\n      }\n    },\n    {\n      \"name\": \"Company name\",\n      \"theme\": {\n        \"images\": {\n          \"logoImageId\": \"638dbe28ecede164c3799d06\",\n          \"backgroundImageId\": \"638dbe0cecede164c3799d05\"\n        },\n        \"messages\": {\n          \"welcomeText\": \"Call link page\",\n          \"inactiveText\": \"This link is no longer active.\",\n          \"expirationText\": \"This link has expired\"\n        },\n        \"colors\": {\n          \"primary\": \"D8D8D8\",\n          \"primaryText\": \"242424\",\n          \"background\": \"FFFFFF\"\n        }\n      }\n    }\n  ],\n  \"paging\": {\n    \"page\": 0,\n    \"size\": 10,\n    \"totalPages\": 1,\n    \"totalResults\": 2\n  }\n}"},{"id":"837b8dec-7e48-45b7-b243-89619f5d154b","name":"400 - Error responses","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/call-link/1/configs","protocol":"https","host":["go2","vhdmedia","se"],"path":["call-link","1","configs"],"query":[{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"BAD_REQUEST\",\n      \"text\": \"Bad request\",\n      \"validationErrors\": {\n        \"field\": [\n          \"field must not be null.\"\n        ]\n      }\n    }\n  }\n}"},{"id":"35b20a47-4349-407e-bdc5-032cc5b76185","name":"401 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/call-link/1/configs","protocol":"https","host":["go2","vhdmedia","se"],"path":["call-link","1","configs"],"query":[{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"25994d13-a0c0-4bd5-8919-759be7e3ae13","name":"403 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/call-link/1/configs","protocol":"https","host":["go2","vhdmedia","se"],"path":["call-link","1","configs"],"query":[{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"5f4f95c4-486e-4f16-900c-e0d4d397fb54","name":"429 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/call-link/1/configs","protocol":"https","host":["go2","vhdmedia","se"],"path":["call-link","1","configs"],"query":[{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"65317132-1d05-410b-ac89-44485b1ffe38","name":"500 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/call-link/1/configs","protocol":"https","host":["go2","vhdmedia","se"],"path":["call-link","1","configs"],"query":[{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"1567151d-9afc-414c-82dc-e3faa9e06c5d"},{"name":"Get call link configuration","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","if (!(pm.environment.get(\"callLinkConfigId\") || \"\")) { skip(\"callLinkConfigId is not set (an earlier request did not create it)\"); }"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"id\", \"name\", \"isDefault\", \"initialOptions\", \"callOptions\", \"theme\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});"],"type":"text/javascript","packages":{}}}],"id":"3b86ce9b-4670-4fc8-923f-05f28639a578","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/configs/{{callLinkConfigId}}","description":"<p>Get configuration.</p>\n<p>Use this method to retrieve a call link configuration by its ID.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>id</em></td>\n<td>String</td>\n<td><strong>Required.</strong> ID of a call link configuration to load.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>id</em></td>\n<td>String</td>\n<td>Configuration ID. Once a call link is created, this value might be sent in the request as one specific call link configuration to be used by the call link.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>Configuration name or description. It doesn't have to be unique.</td>\n</tr>\n<tr>\n<td><em>isDefault</em></td>\n<td>Boolean</td>\n<td>When you create call link without callLinkConfigId, the one marked as default will be used. Only one configuration can be default.If you don't have a configuration, the basic VHD theme with default values and minimal options will be used.If you want to set another configuration as default, specify its value when adding or updating it.</td>\n</tr>\n<tr>\n<td><em>initialOptions</em></td>\n<td>Object</td>\n<td>User options available when a user opens a call link page before initiating the call. Depending on the fields, certain options for the call will be shown to a user.</td>\n</tr>\n<tr>\n<td><em>initialOptions.audio</em></td>\n<td>Boolean</td>\n<td>User will be able to initiate the audio call.</td>\n</tr>\n<tr>\n<td><em>initialOptions.video</em></td>\n<td>Boolean</td>\n<td>User will be able to initiate the video call.</td>\n</tr>\n<tr>\n<td><em>initialOptions.muted</em></td>\n<td>Boolean</td>\n<td>User will be muted once the call is established.</td>\n</tr>\n<tr>\n<td><em>initialOptions.settings</em></td>\n<td>Boolean</td>\n<td>User will be able to configure settings before a call.</td>\n</tr>\n<tr>\n<td><em>initialOptions.cameraFacingMode</em></td>\n<td>String</td>\n<td>In the case of a video call on mobile phones camera will be back or front depending on this value. It is 'FRONT' by default. One of: <code>FRONT</code>, <code>BACK</code>.</td>\n</tr>\n<tr>\n<td><em>callOptions</em></td>\n<td>Object</td>\n<td>User options available during a call. Depending on the fields, certain options for a call will be shown to a user.</td>\n</tr>\n<tr>\n<td><em>callOptions.mute</em></td>\n<td>Boolean</td>\n<td>User will be able to mute themselves during the call.</td>\n</tr>\n<tr>\n<td><em>callOptions.screenShare</em></td>\n<td>Boolean</td>\n<td>User will be able to share the screen during the call.</td>\n</tr>\n<tr>\n<td><em>callOptions.camera</em></td>\n<td>Boolean</td>\n<td>User will be able to toggle the video during the call.</td>\n</tr>\n<tr>\n<td><em>callOptions.switchCameraFacingMode</em></td>\n<td>Boolean</td>\n<td>User will be able to switch between front-facing and back camera during the call.</td>\n</tr>\n<tr>\n<td><em>callOptions.dialPad</em></td>\n<td>Boolean</td>\n<td>User will be able to use dial pad for DTMF, during the call.</td>\n</tr>\n<tr>\n<td><em>callOptions.chat</em></td>\n<td>Boolean</td>\n<td>Users will be able to open the chat box and send and receive text messages that are visible to all the participants. This is applicable only for the ROOM call type. Messages sent before joining the room are not visible.</td>\n</tr>\n<tr>\n<td><em>callOptions.settings</em></td>\n<td>Boolean</td>\n<td>User will be able to access settings during the call.</td>\n</tr>\n<tr>\n<td><em>callOptions.recordingIndicator</em></td>\n<td>Boolean</td>\n<td>User will be able to see if the call is being recorded.</td>\n</tr>\n<tr>\n<td><em>theme</em></td>\n<td>Object</td>\n<td>Call link theme-specific configuration settings. Use it to add image, color, and text selections to customize a call link page.</td>\n</tr>\n<tr>\n<td><em>theme.images</em></td>\n<td>Object</td>\n<td>Enumerate images shown on a call link page. Once an image is uploaded (by using the image upload API) a unique ID returned in that response can be used to add a background image or a logo image.</td>\n</tr>\n<tr>\n<td><em>theme.images.logoImageId</em></td>\n<td>String</td>\n<td>ID of an image shown as a logo on a call link page.</td>\n</tr>\n<tr>\n<td><em>theme.images.backgroundImageId</em></td>\n<td>String</td>\n<td>ID of an image shown as a background on a call link page.</td>\n</tr>\n<tr>\n<td><em>theme.messages</em></td>\n<td>Object</td>\n<td>Call link messaging settings.</td>\n</tr>\n<tr>\n<td><em>theme.messages.welcomeText</em></td>\n<td>String</td>\n<td>Message shown when a call link is opened.</td>\n</tr>\n<tr>\n<td><em>theme.messages.inactiveText</em></td>\n<td>String</td>\n<td>Message shown when a call link is not active.</td>\n</tr>\n<tr>\n<td><em>theme.messages.expirationText</em></td>\n<td>String</td>\n<td>Message shown when a call link is expired.</td>\n</tr>\n<tr>\n<td><em>theme.colors</em></td>\n<td>Object</td>\n<td>Colors settings. If not specified, the default colors will be used.</td>\n</tr>\n<tr>\n<td><em>theme.colors.primary</em></td>\n<td>String</td>\n<td>Primary color of a theme in the hexadecimal format.</td>\n</tr>\n<tr>\n<td><em>theme.colors.primaryText</em></td>\n<td>String</td>\n<td>Primary color of a text in the hexadecimal format.</td>\n</tr>\n<tr>\n<td><em>theme.colors.background</em></td>\n<td>String</td>\n<td>Background color in the hexadecimal format.</td>\n</tr>\n<tr>\n<td><em>theme.layouts</em></td>\n<td>Array</td>\n<td>Represents layout during the call.When GRID layout is selected, multiple video streams are displayed simultaneously and user can spotlight specific video stream.When SOLO layout is selected, an user can see only his video streams.If there are more than one layout in this list, the first one will be initially selected, and users can change it during the call.The default layout will be set to GRID.</td>\n</tr>\n<tr>\n<td><em>theme.localization</em></td>\n<td>Object</td>\n<td>If the localization object is not defined, English will be used. If the localization type is set to PRESET, the language code is mandatory to be defined to one of the predefined values.If the localization type is set to BROWSER_DETECTED and the browser language is one of the languages that could be set in PRESET type, then that language will be used. Otherwise, English will be used.</td>\n</tr>\n<tr>\n<td><em>theme.localization.type</em></td>\n<td>String</td>\n<td>One of: <code>BROWSER_DETECTED</code>, <code>PRESET</code>.</td>\n</tr>\n<tr>\n<td><em>subdomainId</em></td>\n<td>String</td>\n<td>Id of the subdomain that will be set on every call link generated with this configuration. If undefined, call links will be generated without a subdomain.</td>\n</tr>\n<tr>\n<td><em>webhook</em></td>\n<td>Object</td>\n<td>Webhook triggered when there is a call event.</td>\n</tr>\n<tr>\n<td><em>webhook.url</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Your webhook URL.</td>\n</tr>\n<tr>\n<td><em>webhook.securityConfig</em></td>\n<td>Object</td>\n<td>Security settings object holding the authentication settings necessary to access your webhook.</td>\n</tr>\n<tr>\n<td><em>webhook.securityConfig.type</em></td>\n<td>String</td>\n<td>One of: <code>BASIC</code>, <code>HMAC</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["call-link","1","configs","{{callLinkConfigId}}"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"206e0cd9-46a1-4a38-adf4-52ee0002e908","name":"200 - Call Link Config Response","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/configs/{{callLinkConfigId}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": \"638dbdc6ecede164c3799d04\",\n  \"name\": \"Company name\",\n  \"isDefault\": true,\n  \"initialOptions\": {\n    \"audio\": true,\n    \"video\": false,\n    \"muted\": false,\n    \"cameraFacingMode\": \"FRONT\"\n  },\n  \"callOptions\": {\n    \"mute\": true,\n    \"screenShare\": true,\n    \"switchCameraFacingMode\": true,\n    \"dialPad\": true\n  },\n  \"theme\": {\n    \"images\": {\n      \"logoImageId\": \"638dbe28ecede164c3799d06\",\n      \"backgroundImageId\": \"638dbe0cecede164c3799d05\"\n    },\n    \"messages\": {\n      \"welcomeText\": \"Call link page\",\n      \"inactiveText\": \"This link is no longer active.\",\n      \"expirationText\": \"This link has expired\"\n    },\n    \"colors\": {\n      \"primary\": \"D8D8D8\",\n      \"primaryText\": \"242424\",\n      \"background\": \"FFFFFF\"\n    }\n  }\n}"},{"id":"f48f607b-fca1-47c3-8bf8-44bc05141b5c","name":"401 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/configs/{{callLinkConfigId}}"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"7d2b93a4-6b57-4b2c-9562-68509ae22d8a","name":"403 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/configs/{{callLinkConfigId}}"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"ee52eee3-893b-41ac-a692-afaddf3cf802","name":"404 - Error responses","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/configs/{{callLinkConfigId}}"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"NOT_FOUND\",\n      \"text\": \"Not found.\"\n    }\n  }\n}"},{"id":"52ce7e7a-04c3-4191-8c48-cbd112c2d72d","name":"429 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/configs/{{callLinkConfigId}}"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"ee54026d-91fe-4886-81bd-df2cc9639494","name":"500 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/configs/{{callLinkConfigId}}"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"3b86ce9b-4670-4fc8-923f-05f28639a578"},{"name":"Partial call link configuration update","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","if (!(pm.environment.get(\"callLinkConfigId\") || \"\")) { skip(\"callLinkConfigId is not set (an earlier request did not create it)\"); }"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"id\", \"name\", \"isDefault\", \"initialOptions\", \"callOptions\", \"theme\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});"],"type":"text/javascript","packages":{}}}],"id":"7905151b-dfc2-4bfe-ab7c-791ef1021a3b","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"PATCH","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Sample call link configuration (patched)\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/call-link/1/configs/{{callLinkConfigId}}","description":"<p>Partial configuration update.</p>\n<p>Use this method to update a call link configuration. New values for configuration attributes replace the existing ones. If no value is passed in the request, the attribute keeps its value.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>id</em></td>\n<td>String</td>\n<td><strong>Required.</strong> ID of a call link configuration to update.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Configuration name.</td>\n</tr>\n<tr>\n<td><em>initialOptions</em></td>\n<td>Object</td>\n<td>User options available when a user opens a call link page before initiating the call. Depending on the fields, certain options for the call will be shown to a user.</td>\n</tr>\n<tr>\n<td><em>initialOptions.audio</em></td>\n<td>Boolean</td>\n<td>User will be able to initiate the audio call.</td>\n</tr>\n<tr>\n<td><em>initialOptions.video</em></td>\n<td>Boolean</td>\n<td>User will be able to initiate the video call.</td>\n</tr>\n<tr>\n<td><em>initialOptions.muted</em></td>\n<td>Boolean</td>\n<td>User will be muted once the call is established.</td>\n</tr>\n<tr>\n<td><em>initialOptions.settings</em></td>\n<td>Boolean</td>\n<td>User will be able to configure settings before a call.</td>\n</tr>\n<tr>\n<td><em>initialOptions.cameraFacingMode</em></td>\n<td>String</td>\n<td>In the case of a video call on mobile phones camera will be back or front depending on this value. It is 'FRONT' by default. One of: <code>FRONT</code>, <code>BACK</code>.</td>\n</tr>\n<tr>\n<td><em>callOptions</em></td>\n<td>Object</td>\n<td>User options available during a call. Depending on the fields, certain options for a call will be shown to a user.</td>\n</tr>\n<tr>\n<td><em>callOptions.mute</em></td>\n<td>Boolean</td>\n<td>User will be able to mute themselves during the call.</td>\n</tr>\n<tr>\n<td><em>callOptions.screenShare</em></td>\n<td>Boolean</td>\n<td>User will be able to share the screen during the call.</td>\n</tr>\n<tr>\n<td><em>callOptions.camera</em></td>\n<td>Boolean</td>\n<td>User will be able to toggle the video during the call.</td>\n</tr>\n<tr>\n<td><em>callOptions.switchCameraFacingMode</em></td>\n<td>Boolean</td>\n<td>User will be able to switch between front-facing and back camera during the call.</td>\n</tr>\n<tr>\n<td><em>callOptions.dialPad</em></td>\n<td>Boolean</td>\n<td>User will be able to use dial pad for DTMF, during the call.</td>\n</tr>\n<tr>\n<td><em>callOptions.chat</em></td>\n<td>Boolean</td>\n<td>Users will be able to open the chat box and send and receive text messages that are visible to all the participants. This is applicable only for the ROOM call type. Messages sent before joining the room are not visible.</td>\n</tr>\n<tr>\n<td><em>callOptions.settings</em></td>\n<td>Boolean</td>\n<td>User will be able to access settings during the call.</td>\n</tr>\n<tr>\n<td><em>callOptions.recordingIndicator</em></td>\n<td>Boolean</td>\n<td>User will be able to see if the call is being recorded.</td>\n</tr>\n<tr>\n<td><em>theme</em></td>\n<td>Object</td>\n<td>Call link theme-specific configuration settings. Use it to add image, color, and text selections to customize a call link page.</td>\n</tr>\n<tr>\n<td><em>theme.images</em></td>\n<td>Object</td>\n<td>Enumerate images shown on a call link page. Once an image is uploaded (by using the image upload API) a unique ID returned in that response can be used to add a background image or a logo image.</td>\n</tr>\n<tr>\n<td><em>theme.images.logoImageId</em></td>\n<td>String</td>\n<td>ID of an image shown as a logo on a call link page.</td>\n</tr>\n<tr>\n<td><em>theme.images.backgroundImageId</em></td>\n<td>String</td>\n<td>ID of an image shown as a background on a call link page.</td>\n</tr>\n<tr>\n<td><em>theme.messages</em></td>\n<td>Object</td>\n<td>Call link messaging settings.</td>\n</tr>\n<tr>\n<td><em>theme.messages.welcomeText</em></td>\n<td>String</td>\n<td>Message shown when a call link is opened.</td>\n</tr>\n<tr>\n<td><em>theme.messages.inactiveText</em></td>\n<td>String</td>\n<td>Message shown when a call link is not active.</td>\n</tr>\n<tr>\n<td><em>theme.messages.expirationText</em></td>\n<td>String</td>\n<td>Message shown when a call link is expired.</td>\n</tr>\n<tr>\n<td><em>theme.colors</em></td>\n<td>Object</td>\n<td>Colors settings. If not specified, the default colors will be used.</td>\n</tr>\n<tr>\n<td><em>theme.colors.primary</em></td>\n<td>String</td>\n<td>Primary color of a theme in the hexadecimal format.</td>\n</tr>\n<tr>\n<td><em>theme.colors.primaryText</em></td>\n<td>String</td>\n<td>Primary color of a text in the hexadecimal format.</td>\n</tr>\n<tr>\n<td><em>theme.colors.background</em></td>\n<td>String</td>\n<td>Background color in the hexadecimal format.</td>\n</tr>\n<tr>\n<td><em>theme.layouts</em></td>\n<td>Array</td>\n<td>Represents layout during the call.When GRID layout is selected, multiple video streams are displayed simultaneously and user can spotlight specific video stream.When SOLO layout is selected, an user can see only his video streams.If there are more than one layout in this list, the first one will be initially selected, and users can change it during the call.The default layout will be set to GRID.</td>\n</tr>\n<tr>\n<td><em>theme.localization</em></td>\n<td>Object</td>\n<td>If the localization object is not defined, English will be used. If the localization type is set to PRESET, the language code is mandatory to be defined to one of the predefined values.If the localization type is set to BROWSER_DETECTED and the browser language is one of the languages that could be set in PRESET type, then that language will be used. Otherwise, English will be used.</td>\n</tr>\n<tr>\n<td><em>theme.localization.type</em></td>\n<td>String</td>\n<td>One of: <code>BROWSER_DETECTED</code>, <code>PRESET</code>.</td>\n</tr>\n<tr>\n<td><em>isDefault</em></td>\n<td>Boolean</td>\n<td>Indicates whether the specific call link configuration is the default one and used with any call link without a callLinkConfigId. Only one configuration can be default.If you don't have a configuration, the basic VHD theme with default values and minimal options will be used.If you want to use another configuration, set this value to <code>true</code> for the call link config you wish as default.</td>\n</tr>\n<tr>\n<td><em>subdomainId</em></td>\n<td>String</td>\n<td>Subdomain to use for every call link generated for this configuration.If not defined, no subdomain will be used.</td>\n</tr>\n<tr>\n<td><em>webhook</em></td>\n<td>Object</td>\n<td>Webhook triggered when there is a call event.</td>\n</tr>\n<tr>\n<td><em>webhook.url</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Your webhook URL.</td>\n</tr>\n<tr>\n<td><em>webhook.securityConfig</em></td>\n<td>Object</td>\n<td>Security settings object holding the authentication settings necessary to access your webhook.</td>\n</tr>\n<tr>\n<td><em>webhook.securityConfig.type</em></td>\n<td>String</td>\n<td>One of: <code>BASIC</code>, <code>HMAC</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>id</em></td>\n<td>String</td>\n<td>Configuration ID. Once a call link is created, this value might be sent in the request as one specific call link configuration to be used by the call link.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>Configuration name or description. It doesn't have to be unique.</td>\n</tr>\n<tr>\n<td><em>isDefault</em></td>\n<td>Boolean</td>\n<td>When you create call link without callLinkConfigId, the one marked as default will be used. Only one configuration can be default.If you don't have a configuration, the basic VHD theme with default values and minimal options will be used.If you want to set another configuration as default, specify its value when adding or updating it.</td>\n</tr>\n<tr>\n<td><em>initialOptions</em></td>\n<td>Object</td>\n<td>User options available when a user opens a call link page before initiating the call. Depending on the fields, certain options for the call will be shown to a user.</td>\n</tr>\n<tr>\n<td><em>initialOptions.audio</em></td>\n<td>Boolean</td>\n<td>User will be able to initiate the audio call.</td>\n</tr>\n<tr>\n<td><em>initialOptions.video</em></td>\n<td>Boolean</td>\n<td>User will be able to initiate the video call.</td>\n</tr>\n<tr>\n<td><em>initialOptions.muted</em></td>\n<td>Boolean</td>\n<td>User will be muted once the call is established.</td>\n</tr>\n<tr>\n<td><em>initialOptions.settings</em></td>\n<td>Boolean</td>\n<td>User will be able to configure settings before a call.</td>\n</tr>\n<tr>\n<td><em>initialOptions.cameraFacingMode</em></td>\n<td>String</td>\n<td>In the case of a video call on mobile phones camera will be back or front depending on this value. It is 'FRONT' by default. One of: <code>FRONT</code>, <code>BACK</code>.</td>\n</tr>\n<tr>\n<td><em>callOptions</em></td>\n<td>Object</td>\n<td>User options available during a call. Depending on the fields, certain options for a call will be shown to a user.</td>\n</tr>\n<tr>\n<td><em>callOptions.mute</em></td>\n<td>Boolean</td>\n<td>User will be able to mute themselves during the call.</td>\n</tr>\n<tr>\n<td><em>callOptions.screenShare</em></td>\n<td>Boolean</td>\n<td>User will be able to share the screen during the call.</td>\n</tr>\n<tr>\n<td><em>callOptions.camera</em></td>\n<td>Boolean</td>\n<td>User will be able to toggle the video during the call.</td>\n</tr>\n<tr>\n<td><em>callOptions.switchCameraFacingMode</em></td>\n<td>Boolean</td>\n<td>User will be able to switch between front-facing and back camera during the call.</td>\n</tr>\n<tr>\n<td><em>callOptions.dialPad</em></td>\n<td>Boolean</td>\n<td>User will be able to use dial pad for DTMF, during the call.</td>\n</tr>\n<tr>\n<td><em>callOptions.chat</em></td>\n<td>Boolean</td>\n<td>Users will be able to open the chat box and send and receive text messages that are visible to all the participants. This is applicable only for the ROOM call type. Messages sent before joining the room are not visible.</td>\n</tr>\n<tr>\n<td><em>callOptions.settings</em></td>\n<td>Boolean</td>\n<td>User will be able to access settings during the call.</td>\n</tr>\n<tr>\n<td><em>callOptions.recordingIndicator</em></td>\n<td>Boolean</td>\n<td>User will be able to see if the call is being recorded.</td>\n</tr>\n<tr>\n<td><em>theme</em></td>\n<td>Object</td>\n<td>Call link theme-specific configuration settings. Use it to add image, color, and text selections to customize a call link page.</td>\n</tr>\n<tr>\n<td><em>theme.images</em></td>\n<td>Object</td>\n<td>Enumerate images shown on a call link page. Once an image is uploaded (by using the image upload API) a unique ID returned in that response can be used to add a background image or a logo image.</td>\n</tr>\n<tr>\n<td><em>theme.images.logoImageId</em></td>\n<td>String</td>\n<td>ID of an image shown as a logo on a call link page.</td>\n</tr>\n<tr>\n<td><em>theme.images.backgroundImageId</em></td>\n<td>String</td>\n<td>ID of an image shown as a background on a call link page.</td>\n</tr>\n<tr>\n<td><em>theme.messages</em></td>\n<td>Object</td>\n<td>Call link messaging settings.</td>\n</tr>\n<tr>\n<td><em>theme.messages.welcomeText</em></td>\n<td>String</td>\n<td>Message shown when a call link is opened.</td>\n</tr>\n<tr>\n<td><em>theme.messages.inactiveText</em></td>\n<td>String</td>\n<td>Message shown when a call link is not active.</td>\n</tr>\n<tr>\n<td><em>theme.messages.expirationText</em></td>\n<td>String</td>\n<td>Message shown when a call link is expired.</td>\n</tr>\n<tr>\n<td><em>theme.colors</em></td>\n<td>Object</td>\n<td>Colors settings. If not specified, the default colors will be used.</td>\n</tr>\n<tr>\n<td><em>theme.colors.primary</em></td>\n<td>String</td>\n<td>Primary color of a theme in the hexadecimal format.</td>\n</tr>\n<tr>\n<td><em>theme.colors.primaryText</em></td>\n<td>String</td>\n<td>Primary color of a text in the hexadecimal format.</td>\n</tr>\n<tr>\n<td><em>theme.colors.background</em></td>\n<td>String</td>\n<td>Background color in the hexadecimal format.</td>\n</tr>\n<tr>\n<td><em>theme.layouts</em></td>\n<td>Array</td>\n<td>Represents layout during the call.When GRID layout is selected, multiple video streams are displayed simultaneously and user can spotlight specific video stream.When SOLO layout is selected, an user can see only his video streams.If there are more than one layout in this list, the first one will be initially selected, and users can change it during the call.The default layout will be set to GRID.</td>\n</tr>\n<tr>\n<td><em>theme.localization</em></td>\n<td>Object</td>\n<td>If the localization object is not defined, English will be used. If the localization type is set to PRESET, the language code is mandatory to be defined to one of the predefined values.If the localization type is set to BROWSER_DETECTED and the browser language is one of the languages that could be set in PRESET type, then that language will be used. Otherwise, English will be used.</td>\n</tr>\n<tr>\n<td><em>theme.localization.type</em></td>\n<td>String</td>\n<td>One of: <code>BROWSER_DETECTED</code>, <code>PRESET</code>.</td>\n</tr>\n<tr>\n<td><em>subdomainId</em></td>\n<td>String</td>\n<td>Id of the subdomain that will be set on every call link generated with this configuration. If undefined, call links will be generated without a subdomain.</td>\n</tr>\n<tr>\n<td><em>webhook</em></td>\n<td>Object</td>\n<td>Webhook triggered when there is a call event.</td>\n</tr>\n<tr>\n<td><em>webhook.url</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Your webhook URL.</td>\n</tr>\n<tr>\n<td><em>webhook.securityConfig</em></td>\n<td>Object</td>\n<td>Security settings object holding the authentication settings necessary to access your webhook.</td>\n</tr>\n<tr>\n<td><em>webhook.securityConfig.type</em></td>\n<td>String</td>\n<td>One of: <code>BASIC</code>, <code>HMAC</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["call-link","1","configs","{{callLinkConfigId}}"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"e48402d5-5225-436b-9771-a4ca88c6f562","name":"200 - Call Link Config Response","originalRequest":{"method":"PATCH","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Company name\",\n  \"initialOptions\": {\n    \"audio\": true,\n    \"video\": false,\n    \"muted\": false,\n    \"cameraFacingMode\": \"FRONT\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/call-link/1/configs/{{callLinkConfigId}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": \"638dbdc6ecede164c3799d04\",\n  \"name\": \"Company name\",\n  \"isDefault\": true,\n  \"initialOptions\": {\n    \"audio\": true,\n    \"video\": false,\n    \"muted\": false,\n    \"cameraFacingMode\": \"FRONT\"\n  },\n  \"callOptions\": {\n    \"mute\": true,\n    \"screenShare\": true,\n    \"switchCameraFacingMode\": true,\n    \"dialPad\": true\n  },\n  \"theme\": {\n    \"images\": {\n      \"logoImageId\": \"638dbe28ecede164c3799d06\",\n      \"backgroundImageId\": \"638dbe0cecede164c3799d05\"\n    },\n    \"messages\": {\n      \"welcomeText\": \"Call link page\",\n      \"inactiveText\": \"This link is no longer active.\",\n      \"expirationText\": \"This link has expired\"\n    },\n    \"colors\": {\n      \"primary\": \"D8D8D8\",\n      \"primaryText\": \"242424\",\n      \"background\": \"FFFFFF\"\n    }\n  }\n}"},{"id":"6dae9977-2629-442b-b210-fedc4e11785d","name":"400 - Error responses","originalRequest":{"method":"PATCH","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Company name\",\n  \"initialOptions\": {\n    \"audio\": true,\n    \"video\": false,\n    \"muted\": false,\n    \"cameraFacingMode\": \"FRONT\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/call-link/1/configs/{{callLinkConfigId}}"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"BAD_REQUEST\",\n      \"text\": \"Bad request\",\n      \"validationErrors\": {\n        \"field\": [\n          \"field must not be null.\"\n        ]\n      }\n    }\n  }\n}"},{"id":"eaf3987d-de0a-4179-af59-0f6cc95a9d4d","name":"401 - Example","originalRequest":{"method":"PATCH","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Company name\",\n  \"initialOptions\": {\n    \"audio\": true,\n    \"video\": false,\n    \"muted\": false,\n    \"cameraFacingMode\": \"FRONT\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/call-link/1/configs/{{callLinkConfigId}}"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"1196520f-65ba-41f1-833e-6c6dd7d47f24","name":"403 - Example","originalRequest":{"method":"PATCH","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Company name\",\n  \"initialOptions\": {\n    \"audio\": true,\n    \"video\": false,\n    \"muted\": false,\n    \"cameraFacingMode\": \"FRONT\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/call-link/1/configs/{{callLinkConfigId}}"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"8341e3bc-d9e7-4f97-8e4b-c627c5e56ea6","name":"404 - Error responses","originalRequest":{"method":"PATCH","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Company name\",\n  \"initialOptions\": {\n    \"audio\": true,\n    \"video\": false,\n    \"muted\": false,\n    \"cameraFacingMode\": \"FRONT\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/call-link/1/configs/{{callLinkConfigId}}"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"NOT_FOUND\",\n      \"text\": \"Not found.\"\n    }\n  }\n}"},{"id":"fb2a985f-ec51-4eb1-88e3-28443c2afdaf","name":"429 - Example","originalRequest":{"method":"PATCH","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Company name\",\n  \"initialOptions\": {\n    \"audio\": true,\n    \"video\": false,\n    \"muted\": false,\n    \"cameraFacingMode\": \"FRONT\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/call-link/1/configs/{{callLinkConfigId}}"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"cae7e6c1-8cde-4448-9322-17b47384663c","name":"500 - Example","originalRequest":{"method":"PATCH","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Company name\",\n  \"initialOptions\": {\n    \"audio\": true,\n    \"video\": false,\n    \"muted\": false,\n    \"cameraFacingMode\": \"FRONT\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/call-link/1/configs/{{callLinkConfigId}}"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"7905151b-dfc2-4bfe-ab7c-791ef1021a3b"},{"name":"Create call link","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","if (!(pm.environment.get(\"callLinkConfigId\") || \"\")) { skip(\"callLinkConfigId is not set (an earlier request did not create it)\"); } else {","    var f = function (d) { var t = new Date(Date.now() + d * 86400000); function p(n) { return (\"0\" + n).slice(-2); } return t.getUTCFullYear() + \"-\" + p(t.getUTCMonth() + 1) + \"-\" + p(t.getUTCDate()) + \"T\" + p(t.getUTCHours()) + \":\" + p(t.getUTCMinutes()) + \":\" + p(t.getUTCSeconds()) + \".000+0000\"; };","    pm.environment.set(\"linkStart\", f(0)); pm.environment.set(\"linkEnd\", f(3));","}"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 201\", function () {","    pm.expect(pm.response.code).to.be.oneOf([201]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"id\", \"url\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","","pm.environment.set(\"callLinkId\", pm.response.json().id);"],"type":"text/javascript","packages":{}}}],"id":"ee9d29c2-4076-459c-b602-02066cf28ab5","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"destination\": {\n    \"identity\": \"bob\",\n    \"type\": \"WEBRTC\"\n  },\n  \"validityWindow\": {\n    \"oneTime\": true,\n    \"startTime\": \"{{linkStart}}\",\n    \"endTime\": \"{{linkEnd}}\"\n  },\n  \"callLinkConfigId\": \"{{callLinkConfigId}}\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/call-link/1/links","description":"<p>Create call link.</p>\n<p>Create a link to send to someone who will then initiate a call.</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>identity</em></td>\n<td>String</td>\n<td>Identity of a user that will use a call link. Must not be set if the destination type of a call link is ROOM.</td>\n</tr>\n<tr>\n<td><em>displayName</em></td>\n<td>String</td>\n<td>Display name of a user that will use a call link to initiate a call. Must not be set if the destination type of a call link is ROOM. For other destination types, if you want to set a display name, also set identity.</td>\n</tr>\n<tr>\n<td><em>showIdentity</em></td>\n<td>Boolean</td>\n<td>Show identity or displayName on before a call.</td>\n</tr>\n<tr>\n<td><em>destination</em></td>\n<td>Object</td>\n<td><strong>Required.</strong> Description of who or what is going to receive a call.</td>\n</tr>\n<tr>\n<td><em>destination.type</em></td>\n<td>String</td>\n<td>One of: <code>WEBRTC</code>, <code>CONVERSATIONS</code>, <code>ROOM</code>, <code>PHONE</code>, <code>VIBER</code>, <code>APPLICATION</code>.</td>\n</tr>\n<tr>\n<td><em>customData</em></td>\n<td>Object</td>\n<td>Custom attributes sent in a call once it has started.</td>\n</tr>\n<tr>\n<td><em>validityWindow</em></td>\n<td>Object</td>\n<td>Description of a call link validation period and the number of times it can be used within the range.</td>\n</tr>\n<tr>\n<td><em>validityWindow.oneTime</em></td>\n<td>Boolean</td>\n<td>By default, call links are generated for multiple calls.If you want to limit the period for how long a link is valid, specify the start and end time. If you want to invalidate a link after establishing a call, set this value to 'true' (defaults to 'false').For ROOM calls, this value cannot be 'true'.</td>\n</tr>\n<tr>\n<td><em>validityWindow.startTime</em></td>\n<td>String</td>\n<td>Specify starting moment in the UTC timezone for when a call link becomes valid. Defaults to the time when a link was created. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ</code>.</td>\n</tr>\n<tr>\n<td><em>validityWindow.endTime</em></td>\n<td>String</td>\n<td>Specify ending moment in the UTC timezone for when a call link becomes invalid. Default value is 24 hours after a link was created. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ</code>.</td>\n</tr>\n<tr>\n<td><em>validityWindow.acceptableHours</em></td>\n<td>Object</td>\n<td>Specify time range within a day when a link can be used. It is 00:00 - 23:59, by default. UTC timezone is used.</td>\n</tr>\n<tr>\n<td><em>validityWindow.acceptableHours.start</em></td>\n<td>Object</td>\n<td></td>\n</tr>\n<tr>\n<td><em>validityWindow.acceptableHours.start.hour</em></td>\n<td>Int</td>\n<td></td>\n</tr>\n<tr>\n<td><em>validityWindow.acceptableHours.start.minute</em></td>\n<td>Int</td>\n<td></td>\n</tr>\n<tr>\n<td><em>validityWindow.acceptableHours.end</em></td>\n<td>Object</td>\n<td></td>\n</tr>\n<tr>\n<td><em>validityWindow.acceptableHours.end.hour</em></td>\n<td>Int</td>\n<td></td>\n</tr>\n<tr>\n<td><em>validityWindow.acceptableHours.end.minute</em></td>\n<td>Int</td>\n<td></td>\n</tr>\n<tr>\n<td><em>validityWindow.acceptableDays</em></td>\n<td>Array</td>\n<td>Specify the days a link can be used. It is every day of the week, by default.</td>\n</tr>\n<tr>\n<td><em>callLinkConfigId</em></td>\n<td>String</td>\n<td>Identifier of a call link configuration. You can use your existing configuration. If this parameter is not sent and there are call link configurations available, the default one will be used. If there are no configurations, the one with system default values will be used.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>201 Created</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>id</em></td>\n<td>String</td>\n<td>Identifier of the created call link. To open a call link, an ID will be concatenated to the URL: <a href=\"https://call-link.com/\">https://call-link.com/</a>.</td>\n</tr>\n<tr>\n<td><em>url</em></td>\n<td>String</td>\n<td>A URL to initiate the call.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["call-link","1","links"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"914846d9-981e-40d8-9739-657d9c0122d4","name":"201 - Call Link Response","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"destination\": {\n    \"identity\": \"bob\",\n    \"type\": \"WEBRTC\"\n  },\n  \"validityWindow\": {\n    \"oneTime\": true,\n    \"startTime\": \"2026-08-24T10:45:59.432+0000\",\n    \"endTime\": \"2026-08-25T10:45:59.432+0000\"\n  },\n  \"callLinkConfigId\": \"638dbdc6ecede164c3799d04\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/call-link/1/links"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": \"r9wpIY\",\n  \"url\": \"https://call-link.com/r9wpIY\"\n}"},{"id":"6bbf7dad-5f42-438a-beed-c722ecc73a50","name":"400 - Error responses","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"destination\": {\n    \"identity\": \"bob\",\n    \"type\": \"WEBRTC\"\n  },\n  \"validityWindow\": {\n    \"oneTime\": true,\n    \"startTime\": \"2026-08-24T10:45:59.432+0000\",\n    \"endTime\": \"2026-08-25T10:45:59.432+0000\"\n  },\n  \"callLinkConfigId\": \"638dbdc6ecede164c3799d04\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/call-link/1/links"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"BAD_REQUEST\",\n      \"text\": \"Bad request\",\n      \"validationErrors\": {\n        \"field\": [\n          \"field must not be null.\"\n        ]\n      }\n    }\n  }\n}"},{"id":"2221c15f-9ef0-4c2c-a02a-db39d21771fb","name":"401 - Example","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"destination\": {\n    \"identity\": \"bob\",\n    \"type\": \"WEBRTC\"\n  },\n  \"validityWindow\": {\n    \"oneTime\": true,\n    \"startTime\": \"2026-08-24T10:45:59.432+0000\",\n    \"endTime\": \"2026-08-25T10:45:59.432+0000\"\n  },\n  \"callLinkConfigId\": \"638dbdc6ecede164c3799d04\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/call-link/1/links"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"c23f00b3-f063-42d2-a1d2-eb7be4ba2444","name":"403 - Example","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"destination\": {\n    \"identity\": \"bob\",\n    \"type\": \"WEBRTC\"\n  },\n  \"validityWindow\": {\n    \"oneTime\": true,\n    \"startTime\": \"2026-08-24T10:45:59.432+0000\",\n    \"endTime\": \"2026-08-25T10:45:59.432+0000\"\n  },\n  \"callLinkConfigId\": \"638dbdc6ecede164c3799d04\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/call-link/1/links"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"8c3791ec-d809-4640-b8fc-96e0d99e2203","name":"429 - Example","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"destination\": {\n    \"identity\": \"bob\",\n    \"type\": \"WEBRTC\"\n  },\n  \"validityWindow\": {\n    \"oneTime\": true,\n    \"startTime\": \"2026-08-24T10:45:59.432+0000\",\n    \"endTime\": \"2026-08-25T10:45:59.432+0000\"\n  },\n  \"callLinkConfigId\": \"638dbdc6ecede164c3799d04\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/call-link/1/links"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"258eaea7-78ad-4586-abdb-a497399efea9","name":"500 - Example","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"destination\": {\n    \"identity\": \"bob\",\n    \"type\": \"WEBRTC\"\n  },\n  \"validityWindow\": {\n    \"oneTime\": true,\n    \"startTime\": \"2026-08-24T10:45:59.432+0000\",\n    \"endTime\": \"2026-08-25T10:45:59.432+0000\"\n  },\n  \"callLinkConfigId\": \"638dbdc6ecede164c3799d04\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/call-link/1/links"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"ee9d29c2-4076-459c-b602-02066cf28ab5"},{"name":"Get call links","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"results\", \"paging\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","","pm.test(\"'results' is an array\", function () {","    pm.expect(responseBody[\"results\"]).to.be.an('array');","});"],"type":"text/javascript","packages":{}}}],"id":"25dbf9c6-63ed-4074-9d9a-0c00ad814802","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/links","description":"<p>Get call links.</p>\n<p>Use this method to retrieve all call links.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>page</em></td>\n<td>Int</td>\n<td>Results page to retrieve (0..N). Default: <code>0</code>.</td>\n</tr>\n<tr>\n<td><em>size</em></td>\n<td>Int</td>\n<td>Number of records per page. Default: <code>20</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results</em></td>\n<td>Array</td>\n<td>The list of the results for this page.</td>\n</tr>\n<tr>\n<td><em>results[].id</em></td>\n<td>String</td>\n<td>Identifier of the created call link. To open a call link, it should be concatenated to the URL: <a href=\"https://call-link.com/\">https://call-link.com/</a>.</td>\n</tr>\n<tr>\n<td><em>results[].url</em></td>\n<td>String</td>\n<td>A URL to initiate a call.</td>\n</tr>\n<tr>\n<td><em>results[].identity</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Identity of a user who will use a call link.</td>\n</tr>\n<tr>\n<td><em>results[].displayName</em></td>\n<td>String</td>\n<td>Display name of a user who will use a call link to initiate a call.</td>\n</tr>\n<tr>\n<td><em>results[].showIdentity</em></td>\n<td>Boolean</td>\n<td>Show identity or displayName on before a call.</td>\n</tr>\n<tr>\n<td><em>results[].destination</em></td>\n<td>Object</td>\n<td><strong>Required.</strong> Description of who or what is going to receive a call.</td>\n</tr>\n<tr>\n<td><em>results[].destination.type</em></td>\n<td>String</td>\n<td>One of: <code>WEBRTC</code>, <code>CONVERSATIONS</code>, <code>ROOM</code>, <code>PHONE</code>, <code>VIBER</code>, <code>APPLICATION</code>.</td>\n</tr>\n<tr>\n<td><em>results[].customData</em></td>\n<td>Object</td>\n<td>Custom attributes sent in a call once it is started.</td>\n</tr>\n<tr>\n<td><em>results[].validityWindow</em></td>\n<td>Object</td>\n<td>Description of a call link validation period and the number of times it can be used within the range.</td>\n</tr>\n<tr>\n<td><em>results[].validityWindow.oneTime</em></td>\n<td>Boolean</td>\n<td>By default, call links are generated for multiple calls.If you want to limit the period for how long a link is valid, specify the start and end time. If you want to invalidate a link after establishing a call, set this value to 'true' (defaults to 'false').For ROOM calls, this value cannot be 'true'.</td>\n</tr>\n<tr>\n<td><em>results[].validityWindow.startTime</em></td>\n<td>String</td>\n<td>Specify starting moment in the UTC timezone for when a call link becomes valid. Defaults to the time when a link was created. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ</code>.</td>\n</tr>\n<tr>\n<td><em>results[].validityWindow.endTime</em></td>\n<td>String</td>\n<td>Specify ending moment in the UTC timezone for when a call link becomes invalid. Default value is 24 hours after a link was created. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ</code>.</td>\n</tr>\n<tr>\n<td><em>results[].validityWindow.acceptableHours</em></td>\n<td>Object</td>\n<td>Specify time range within a day when a link can be used. It is 00:00 - 23:59, by default. UTC timezone is used.</td>\n</tr>\n<tr>\n<td><em>results[].validityWindow.acceptableHours.start</em></td>\n<td>Object</td>\n<td></td>\n</tr>\n<tr>\n<td><em>results[].validityWindow.acceptableHours.start.hour</em></td>\n<td>Int</td>\n<td></td>\n</tr>\n<tr>\n<td><em>results[].validityWindow.acceptableHours.start.minute</em></td>\n<td>Int</td>\n<td></td>\n</tr>\n<tr>\n<td><em>results[].validityWindow.acceptableHours.end</em></td>\n<td>Object</td>\n<td></td>\n</tr>\n<tr>\n<td><em>results[].validityWindow.acceptableHours.end.hour</em></td>\n<td>Int</td>\n<td></td>\n</tr>\n<tr>\n<td><em>results[].validityWindow.acceptableHours.end.minute</em></td>\n<td>Int</td>\n<td></td>\n</tr>\n<tr>\n<td><em>results[].validityWindow.acceptableDays</em></td>\n<td>Array</td>\n<td>Specify the days a link can be used. It is every day of the week, by default.</td>\n</tr>\n<tr>\n<td><em>results[].callLinkConfigId</em></td>\n<td>String</td>\n<td>ID of a configuration to use on an existing call link. If this parameter is not sent, and there are some call link configurations, the default one will be used. If there is no configurations, then the one with the system default values will be used.</td>\n</tr>\n<tr>\n<td><em>paging</em></td>\n<td>Object</td>\n<td>Contains information about the page.</td>\n</tr>\n<tr>\n<td><em>paging.page</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Requested page number.</td>\n</tr>\n<tr>\n<td><em>paging.size</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Requested page size.</td>\n</tr>\n<tr>\n<td><em>paging.totalPages</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> The total number of pages of the results matching the requested parameters.</td>\n</tr>\n<tr>\n<td><em>paging.totalResults</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> The total number of the results matching the requested parameters.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["call-link","1","links"],"host":["go2","vhdmedia","se"],"query":[{"disabled":true,"description":{"content":"<p>Results page to retrieve (0..N). Default: <code>0</code>.</p>\n","type":"text/plain"},"key":"page","value":""},{"disabled":true,"description":{"content":"<p>Number of records per page. Default: <code>20</code>.</p>\n","type":"text/plain"},"key":"size","value":""}],"variable":[]}},"response":[{"id":"58a4452c-1d5c-42b4-9f36-2348606b206c","name":"200 - Call Link Page Response","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/call-link/1/links","protocol":"https","host":["go2","vhdmedia","se"],"path":["call-link","1","links"],"query":[{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"results\": [\n    {\n      \"id\": \"r9wpIY\",\n      \"identity\": \"john\",\n      \"displayName\": \"John Doe\",\n      \"destination\": {\n        \"identity\": \"bob\",\n        \"type\": \"WEBRTC\"\n      },\n      \"customData\": {\n        \"city\": \"New York\",\n        \"language\": \"en\"\n      },\n      \"validityWindow\": {\n        \"oneTime\": true,\n        \"startTime\": \"2026-08-24T10:45:59.432+0000\",\n        \"endTime\": \"2026-08-25T10:45:59.432+0000\"\n      },\n      \"callLinkConfigId\": \"638dbdc6ecede164c3799d04\"\n    },\n    {\n      \"id\": \"1234\",\n      \"identity\": \"jane\",\n      \"displayName\": \"Jane Doe\",\n      \"destination\": {\n        \"identity\": \"bob\",\n        \"type\": \"WEBRTC\"\n      }\n    }\n  ],\n  \"paging\": {\n    \"page\": 0,\n    \"size\": 10,\n    \"totalPages\": 1,\n    \"totalResults\": 2\n  }\n}"},{"id":"0cc95a35-7cb3-4cc7-9a3f-b9b5bbf03548","name":"400 - Error responses","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/call-link/1/links","protocol":"https","host":["go2","vhdmedia","se"],"path":["call-link","1","links"],"query":[{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"BAD_REQUEST\",\n      \"text\": \"Bad request\",\n      \"validationErrors\": {\n        \"field\": [\n          \"field must not be null.\"\n        ]\n      }\n    }\n  }\n}"},{"id":"d0c65599-22e6-4cbc-8deb-c6f6164355e4","name":"401 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/call-link/1/links","protocol":"https","host":["go2","vhdmedia","se"],"path":["call-link","1","links"],"query":[{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"9d76bf91-0c82-4d11-9bbc-72c9d6d13729","name":"403 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/call-link/1/links","protocol":"https","host":["go2","vhdmedia","se"],"path":["call-link","1","links"],"query":[{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"5cd7c9f1-99e2-4dbf-a9b6-0d33d1ebcae1","name":"429 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/call-link/1/links","protocol":"https","host":["go2","vhdmedia","se"],"path":["call-link","1","links"],"query":[{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"30f00611-74a0-436c-81d7-51ff28185cd1","name":"500 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/call-link/1/links","protocol":"https","host":["go2","vhdmedia","se"],"path":["call-link","1","links"],"query":[{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"25dbf9c6-63ed-4074-9d9a-0c00ad814802"},{"name":"Get call link","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","if (!(pm.environment.get(\"callLinkId\") || \"\")) { skip(\"callLinkId is not set (an earlier request did not create it)\"); }"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});"],"type":"text/javascript","packages":{}}}],"id":"25b100b3-041c-4ac1-ba7d-9795ad27759f","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/links/{{callLinkId}}","description":"<p>Get call link.</p>\n<p>Use this method to get a call link by its ID.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>id</em></td>\n<td>String</td>\n<td><strong>Required.</strong> ID of a call link.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>id</em></td>\n<td>String</td>\n<td>Identifier of the created call link. To open a call link, it should be concatenated to the URL: <a href=\"https://call-link.com/\">https://call-link.com/</a>.</td>\n</tr>\n<tr>\n<td><em>url</em></td>\n<td>String</td>\n<td>A URL to initiate a call.</td>\n</tr>\n<tr>\n<td><em>identity</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Identity of a user who will use a call link.</td>\n</tr>\n<tr>\n<td><em>displayName</em></td>\n<td>String</td>\n<td>Display name of a user who will use a call link to initiate a call.</td>\n</tr>\n<tr>\n<td><em>showIdentity</em></td>\n<td>Boolean</td>\n<td>Show identity or displayName on before a call.</td>\n</tr>\n<tr>\n<td><em>destination</em></td>\n<td>Object</td>\n<td><strong>Required.</strong> Description of who or what is going to receive a call.</td>\n</tr>\n<tr>\n<td><em>destination.type</em></td>\n<td>String</td>\n<td>One of: <code>WEBRTC</code>, <code>CONVERSATIONS</code>, <code>ROOM</code>, <code>PHONE</code>, <code>VIBER</code>, <code>APPLICATION</code>.</td>\n</tr>\n<tr>\n<td><em>customData</em></td>\n<td>Object</td>\n<td>Custom attributes sent in a call once it is started.</td>\n</tr>\n<tr>\n<td><em>validityWindow</em></td>\n<td>Object</td>\n<td>Description of a call link validation period and the number of times it can be used within the range.</td>\n</tr>\n<tr>\n<td><em>validityWindow.oneTime</em></td>\n<td>Boolean</td>\n<td>By default, call links are generated for multiple calls.If you want to limit the period for how long a link is valid, specify the start and end time. If you want to invalidate a link after establishing a call, set this value to 'true' (defaults to 'false').For ROOM calls, this value cannot be 'true'.</td>\n</tr>\n<tr>\n<td><em>validityWindow.startTime</em></td>\n<td>String</td>\n<td>Specify starting moment in the UTC timezone for when a call link becomes valid. Defaults to the time when a link was created. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ</code>.</td>\n</tr>\n<tr>\n<td><em>validityWindow.endTime</em></td>\n<td>String</td>\n<td>Specify ending moment in the UTC timezone for when a call link becomes invalid. Default value is 24 hours after a link was created. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ</code>.</td>\n</tr>\n<tr>\n<td><em>validityWindow.acceptableHours</em></td>\n<td>Object</td>\n<td>Specify time range within a day when a link can be used. It is 00:00 - 23:59, by default. UTC timezone is used.</td>\n</tr>\n<tr>\n<td><em>validityWindow.acceptableHours.start</em></td>\n<td>Object</td>\n<td></td>\n</tr>\n<tr>\n<td><em>validityWindow.acceptableHours.start.hour</em></td>\n<td>Int</td>\n<td></td>\n</tr>\n<tr>\n<td><em>validityWindow.acceptableHours.start.minute</em></td>\n<td>Int</td>\n<td></td>\n</tr>\n<tr>\n<td><em>validityWindow.acceptableHours.end</em></td>\n<td>Object</td>\n<td></td>\n</tr>\n<tr>\n<td><em>validityWindow.acceptableHours.end.hour</em></td>\n<td>Int</td>\n<td></td>\n</tr>\n<tr>\n<td><em>validityWindow.acceptableHours.end.minute</em></td>\n<td>Int</td>\n<td></td>\n</tr>\n<tr>\n<td><em>validityWindow.acceptableDays</em></td>\n<td>Array</td>\n<td>Specify the days a link can be used. It is every day of the week, by default.</td>\n</tr>\n<tr>\n<td><em>callLinkConfigId</em></td>\n<td>String</td>\n<td>ID of a configuration to use on an existing call link. If this parameter is not sent, and there are some call link configurations, the default one will be used. If there is no configurations, then the one with the system default values will be used.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["call-link","1","links","{{callLinkId}}"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"5e579bb9-bac7-48a3-b98d-46682f72e8b0","name":"200 OK","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/links/{{callLinkId}}"},"status":"OK","code":200,"_postman_previewlanguage":"text","header":null,"cookie":[],"responseTime":null,"body":null},{"id":"6ad1b9f4-ecad-4775-ac53-babf6ba29e4f","name":"400 - Error responses","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/links/{{callLinkId}}"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"BAD_REQUEST\",\n      \"text\": \"Bad request\",\n      \"validationErrors\": {\n        \"field\": [\n          \"field must not be null.\"\n        ]\n      }\n    }\n  }\n}"},{"id":"042bee4d-6814-48de-937b-699130649732","name":"401 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/links/{{callLinkId}}"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"bbb26ff4-8d8e-4dde-8e04-9d17816ebb54","name":"403 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/links/{{callLinkId}}"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"5204e0e7-6610-4eda-a6e5-ac1da4c0de92","name":"404 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/links/{{callLinkId}}"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"NOT_FOUND\",\n      \"text\": \"Not found\"\n    }\n  }\n}"},{"id":"85fffe9b-ffaf-45b2-8f61-61da9dddf642","name":"429 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/links/{{callLinkId}}"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"649c3787-5921-42a7-a16e-57fdd74e3815","name":"500 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/links/{{callLinkId}}"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"25b100b3-041c-4ac1-ba7d-9795ad27759f"},{"name":"Delete call link","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","if (!(pm.environment.get(\"callLinkId\") || \"\")) { skip(\"callLinkId is not set (an earlier request did not create it)\"); }"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});"],"type":"text/javascript","packages":{}}}],"id":"804a5ba8-4ed2-43eb-b04a-89313c2a33e8","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/links/{{callLinkId}}","description":"<p>Delete call link.</p>\n<p>Use this method to delete a call link by its ID.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>id</em></td>\n<td>String</td>\n<td><strong>Required.</strong> ID of a call link to delete.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>id</em></td>\n<td>String</td>\n<td>Identifier of the created call link. To open a call link, it should be concatenated to the URL: <a href=\"https://call-link.com/\">https://call-link.com/</a>.</td>\n</tr>\n<tr>\n<td><em>url</em></td>\n<td>String</td>\n<td>A URL to initiate a call.</td>\n</tr>\n<tr>\n<td><em>identity</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Identity of a user who will use a call link.</td>\n</tr>\n<tr>\n<td><em>displayName</em></td>\n<td>String</td>\n<td>Display name of a user who will use a call link to initiate a call.</td>\n</tr>\n<tr>\n<td><em>showIdentity</em></td>\n<td>Boolean</td>\n<td>Show identity or displayName on before a call.</td>\n</tr>\n<tr>\n<td><em>destination</em></td>\n<td>Object</td>\n<td><strong>Required.</strong> Description of who or what is going to receive a call.</td>\n</tr>\n<tr>\n<td><em>destination.type</em></td>\n<td>String</td>\n<td>One of: <code>WEBRTC</code>, <code>CONVERSATIONS</code>, <code>ROOM</code>, <code>PHONE</code>, <code>VIBER</code>, <code>APPLICATION</code>.</td>\n</tr>\n<tr>\n<td><em>customData</em></td>\n<td>Object</td>\n<td>Custom attributes sent in a call once it is started.</td>\n</tr>\n<tr>\n<td><em>validityWindow</em></td>\n<td>Object</td>\n<td>Description of a call link validation period and the number of times it can be used within the range.</td>\n</tr>\n<tr>\n<td><em>validityWindow.oneTime</em></td>\n<td>Boolean</td>\n<td>By default, call links are generated for multiple calls.If you want to limit the period for how long a link is valid, specify the start and end time. If you want to invalidate a link after establishing a call, set this value to 'true' (defaults to 'false').For ROOM calls, this value cannot be 'true'.</td>\n</tr>\n<tr>\n<td><em>validityWindow.startTime</em></td>\n<td>String</td>\n<td>Specify starting moment in the UTC timezone for when a call link becomes valid. Defaults to the time when a link was created. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ</code>.</td>\n</tr>\n<tr>\n<td><em>validityWindow.endTime</em></td>\n<td>String</td>\n<td>Specify ending moment in the UTC timezone for when a call link becomes invalid. Default value is 24 hours after a link was created. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ</code>.</td>\n</tr>\n<tr>\n<td><em>validityWindow.acceptableHours</em></td>\n<td>Object</td>\n<td>Specify time range within a day when a link can be used. It is 00:00 - 23:59, by default. UTC timezone is used.</td>\n</tr>\n<tr>\n<td><em>validityWindow.acceptableHours.start</em></td>\n<td>Object</td>\n<td></td>\n</tr>\n<tr>\n<td><em>validityWindow.acceptableHours.start.hour</em></td>\n<td>Int</td>\n<td></td>\n</tr>\n<tr>\n<td><em>validityWindow.acceptableHours.start.minute</em></td>\n<td>Int</td>\n<td></td>\n</tr>\n<tr>\n<td><em>validityWindow.acceptableHours.end</em></td>\n<td>Object</td>\n<td></td>\n</tr>\n<tr>\n<td><em>validityWindow.acceptableHours.end.hour</em></td>\n<td>Int</td>\n<td></td>\n</tr>\n<tr>\n<td><em>validityWindow.acceptableHours.end.minute</em></td>\n<td>Int</td>\n<td></td>\n</tr>\n<tr>\n<td><em>validityWindow.acceptableDays</em></td>\n<td>Array</td>\n<td>Specify the days a link can be used. It is every day of the week, by default.</td>\n</tr>\n<tr>\n<td><em>callLinkConfigId</em></td>\n<td>String</td>\n<td>ID of a configuration to use on an existing call link. If this parameter is not sent, and there are some call link configurations, the default one will be used. If there is no configurations, then the one with the system default values will be used.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["call-link","1","links","{{callLinkId}}"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"1e87247d-4454-4912-900d-c8f3af391811","name":"200 OK","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/links/{{callLinkId}}"},"status":"OK","code":200,"_postman_previewlanguage":"text","header":null,"cookie":[],"responseTime":null,"body":null},{"id":"269567a7-b9de-4bad-8555-dea2b6a5690b","name":"401 - Example","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/links/{{callLinkId}}"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"8e80f9dc-e139-4175-b0fc-cdc89ee9b672","name":"403 - Example","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/links/{{callLinkId}}"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"11a734cd-33bb-4b1f-912c-eb29f93d5ded","name":"404 - Error responses","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/links/{{callLinkId}}"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"NOT_FOUND\",\n      \"text\": \"Not found.\"\n    }\n  }\n}"},{"id":"6f08108d-8f8c-4861-9a4b-a6d1b276b039","name":"429 - Example","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/links/{{callLinkId}}"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"91b233b6-643b-43b2-beda-ba2bc942f486","name":"500 - Example","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/links/{{callLinkId}}"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"804a5ba8-4ed2-43eb-b04a-89313c2a33e8"},{"name":"Delete call link configuration","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","if (!(pm.environment.get(\"callLinkConfigId\") || \"\")) { skip(\"callLinkConfigId is not set (an earlier request did not create it)\"); }"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"id\", \"name\", \"isDefault\", \"initialOptions\", \"callOptions\", \"theme\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});"],"type":"text/javascript","packages":{}}}],"id":"16e029e5-fa60-483b-b751-88b21f09d509","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/configs/{{callLinkConfigId}}","description":"<p>Delete configuration.</p>\n<p>Use this method to delete a call link configuration by its ID.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>id</em></td>\n<td>String</td>\n<td><strong>Required.</strong> ID of a call link configuration to delete.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>id</em></td>\n<td>String</td>\n<td>Configuration ID. Once a call link is created, this value might be sent in the request as one specific call link configuration to be used by the call link.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>Configuration name or description. It doesn't have to be unique.</td>\n</tr>\n<tr>\n<td><em>isDefault</em></td>\n<td>Boolean</td>\n<td>When you create call link without callLinkConfigId, the one marked as default will be used. Only one configuration can be default.If you don't have a configuration, the basic VHD theme with default values and minimal options will be used.If you want to set another configuration as default, specify its value when adding or updating it.</td>\n</tr>\n<tr>\n<td><em>initialOptions</em></td>\n<td>Object</td>\n<td>User options available when a user opens a call link page before initiating the call. Depending on the fields, certain options for the call will be shown to a user.</td>\n</tr>\n<tr>\n<td><em>initialOptions.audio</em></td>\n<td>Boolean</td>\n<td>User will be able to initiate the audio call.</td>\n</tr>\n<tr>\n<td><em>initialOptions.video</em></td>\n<td>Boolean</td>\n<td>User will be able to initiate the video call.</td>\n</tr>\n<tr>\n<td><em>initialOptions.muted</em></td>\n<td>Boolean</td>\n<td>User will be muted once the call is established.</td>\n</tr>\n<tr>\n<td><em>initialOptions.settings</em></td>\n<td>Boolean</td>\n<td>User will be able to configure settings before a call.</td>\n</tr>\n<tr>\n<td><em>initialOptions.cameraFacingMode</em></td>\n<td>String</td>\n<td>In the case of a video call on mobile phones camera will be back or front depending on this value. It is 'FRONT' by default. One of: <code>FRONT</code>, <code>BACK</code>.</td>\n</tr>\n<tr>\n<td><em>callOptions</em></td>\n<td>Object</td>\n<td>User options available during a call. Depending on the fields, certain options for a call will be shown to a user.</td>\n</tr>\n<tr>\n<td><em>callOptions.mute</em></td>\n<td>Boolean</td>\n<td>User will be able to mute themselves during the call.</td>\n</tr>\n<tr>\n<td><em>callOptions.screenShare</em></td>\n<td>Boolean</td>\n<td>User will be able to share the screen during the call.</td>\n</tr>\n<tr>\n<td><em>callOptions.camera</em></td>\n<td>Boolean</td>\n<td>User will be able to toggle the video during the call.</td>\n</tr>\n<tr>\n<td><em>callOptions.switchCameraFacingMode</em></td>\n<td>Boolean</td>\n<td>User will be able to switch between front-facing and back camera during the call.</td>\n</tr>\n<tr>\n<td><em>callOptions.dialPad</em></td>\n<td>Boolean</td>\n<td>User will be able to use dial pad for DTMF, during the call.</td>\n</tr>\n<tr>\n<td><em>callOptions.chat</em></td>\n<td>Boolean</td>\n<td>Users will be able to open the chat box and send and receive text messages that are visible to all the participants. This is applicable only for the ROOM call type. Messages sent before joining the room are not visible.</td>\n</tr>\n<tr>\n<td><em>callOptions.settings</em></td>\n<td>Boolean</td>\n<td>User will be able to access settings during the call.</td>\n</tr>\n<tr>\n<td><em>callOptions.recordingIndicator</em></td>\n<td>Boolean</td>\n<td>User will be able to see if the call is being recorded.</td>\n</tr>\n<tr>\n<td><em>theme</em></td>\n<td>Object</td>\n<td>Call link theme-specific configuration settings. Use it to add image, color, and text selections to customize a call link page.</td>\n</tr>\n<tr>\n<td><em>theme.images</em></td>\n<td>Object</td>\n<td>Enumerate images shown on a call link page. Once an image is uploaded (by using the image upload API) a unique ID returned in that response can be used to add a background image or a logo image.</td>\n</tr>\n<tr>\n<td><em>theme.images.logoImageId</em></td>\n<td>String</td>\n<td>ID of an image shown as a logo on a call link page.</td>\n</tr>\n<tr>\n<td><em>theme.images.backgroundImageId</em></td>\n<td>String</td>\n<td>ID of an image shown as a background on a call link page.</td>\n</tr>\n<tr>\n<td><em>theme.messages</em></td>\n<td>Object</td>\n<td>Call link messaging settings.</td>\n</tr>\n<tr>\n<td><em>theme.messages.welcomeText</em></td>\n<td>String</td>\n<td>Message shown when a call link is opened.</td>\n</tr>\n<tr>\n<td><em>theme.messages.inactiveText</em></td>\n<td>String</td>\n<td>Message shown when a call link is not active.</td>\n</tr>\n<tr>\n<td><em>theme.messages.expirationText</em></td>\n<td>String</td>\n<td>Message shown when a call link is expired.</td>\n</tr>\n<tr>\n<td><em>theme.colors</em></td>\n<td>Object</td>\n<td>Colors settings. If not specified, the default colors will be used.</td>\n</tr>\n<tr>\n<td><em>theme.colors.primary</em></td>\n<td>String</td>\n<td>Primary color of a theme in the hexadecimal format.</td>\n</tr>\n<tr>\n<td><em>theme.colors.primaryText</em></td>\n<td>String</td>\n<td>Primary color of a text in the hexadecimal format.</td>\n</tr>\n<tr>\n<td><em>theme.colors.background</em></td>\n<td>String</td>\n<td>Background color in the hexadecimal format.</td>\n</tr>\n<tr>\n<td><em>theme.layouts</em></td>\n<td>Array</td>\n<td>Represents layout during the call.When GRID layout is selected, multiple video streams are displayed simultaneously and user can spotlight specific video stream.When SOLO layout is selected, an user can see only his video streams.If there are more than one layout in this list, the first one will be initially selected, and users can change it during the call.The default layout will be set to GRID.</td>\n</tr>\n<tr>\n<td><em>theme.localization</em></td>\n<td>Object</td>\n<td>If the localization object is not defined, English will be used. If the localization type is set to PRESET, the language code is mandatory to be defined to one of the predefined values.If the localization type is set to BROWSER_DETECTED and the browser language is one of the languages that could be set in PRESET type, then that language will be used. Otherwise, English will be used.</td>\n</tr>\n<tr>\n<td><em>theme.localization.type</em></td>\n<td>String</td>\n<td>One of: <code>BROWSER_DETECTED</code>, <code>PRESET</code>.</td>\n</tr>\n<tr>\n<td><em>subdomainId</em></td>\n<td>String</td>\n<td>Id of the subdomain that will be set on every call link generated with this configuration. If undefined, call links will be generated without a subdomain.</td>\n</tr>\n<tr>\n<td><em>webhook</em></td>\n<td>Object</td>\n<td>Webhook triggered when there is a call event.</td>\n</tr>\n<tr>\n<td><em>webhook.url</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Your webhook URL.</td>\n</tr>\n<tr>\n<td><em>webhook.securityConfig</em></td>\n<td>Object</td>\n<td>Security settings object holding the authentication settings necessary to access your webhook.</td>\n</tr>\n<tr>\n<td><em>webhook.securityConfig.type</em></td>\n<td>String</td>\n<td>One of: <code>BASIC</code>, <code>HMAC</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["call-link","1","configs","{{callLinkConfigId}}"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"6a33a4a3-d06d-468c-a77a-7b4b1e02238b","name":"200 - Call Link Config Response","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/configs/{{callLinkConfigId}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": \"638dbdc6ecede164c3799d04\",\n  \"name\": \"Company name\",\n  \"isDefault\": true,\n  \"initialOptions\": {\n    \"audio\": true,\n    \"video\": false,\n    \"muted\": false,\n    \"cameraFacingMode\": \"FRONT\"\n  },\n  \"callOptions\": {\n    \"mute\": true,\n    \"screenShare\": true,\n    \"switchCameraFacingMode\": true,\n    \"dialPad\": true\n  },\n  \"theme\": {\n    \"images\": {\n      \"logoImageId\": \"638dbe28ecede164c3799d06\",\n      \"backgroundImageId\": \"638dbe0cecede164c3799d05\"\n    },\n    \"messages\": {\n      \"welcomeText\": \"Call link page\",\n      \"inactiveText\": \"This link is no longer active.\",\n      \"expirationText\": \"This link has expired\"\n    },\n    \"colors\": {\n      \"primary\": \"D8D8D8\",\n      \"primaryText\": \"242424\",\n      \"background\": \"FFFFFF\"\n    }\n  }\n}"},{"id":"7fbaf220-b395-4ee7-8f81-f34f3292df6e","name":"401 - Example","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/configs/{{callLinkConfigId}}"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"715a9b80-288d-4907-a484-4bdb0b849290","name":"403 - Example","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/configs/{{callLinkConfigId}}"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"dfb50d94-11c3-475b-87cb-2932b9598efe","name":"404 - Error responses","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/configs/{{callLinkConfigId}}"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"NOT_FOUND\",\n      \"text\": \"Not found.\"\n    }\n  }\n}"},{"id":"090e5f76-8cb1-4079-952c-ed4cfb24f64f","name":"429 - Example","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/configs/{{callLinkConfigId}}"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"32870c0f-ce14-4f40-81fd-d05cada74d45","name":"500 - Example","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/configs/{{callLinkConfigId}}"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"16e029e5-fa60-483b-b751-88b21f09d509"},{"name":"Get call link images","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"results\", \"paging\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","","pm.test(\"'results' is an array\", function () {","    pm.expect(responseBody[\"results\"]).to.be.an('array');","});"],"type":"text/javascript","packages":{}}}],"id":"62513967-518c-4fab-8ef0-685f4afaa288","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/images","description":"<p>Get images.</p>\n<p>Use this method to retrieve all images.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>page</em></td>\n<td>Int</td>\n<td>Results page to retrieve (0..N). Default: <code>0</code>.</td>\n</tr>\n<tr>\n<td><em>size</em></td>\n<td>Int</td>\n<td>Number of records per page. Default: <code>20</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results</em></td>\n<td>Array</td>\n<td>The list of the results for this page.</td>\n</tr>\n<tr>\n<td><em>results[].id</em></td>\n<td>String</td>\n<td>Unique ID of an image.</td>\n</tr>\n<tr>\n<td><em>results[].name</em></td>\n<td>String</td>\n<td>Image name.</td>\n</tr>\n<tr>\n<td><em>results[].type</em></td>\n<td>String</td>\n<td>Image type. One of: <code>LOGO</code>, <code>BACKGROUND</code>.</td>\n</tr>\n<tr>\n<td><em>results[].size</em></td>\n<td>Int</td>\n<td>Image size in bytes.</td>\n</tr>\n<tr>\n<td><em>paging</em></td>\n<td>Object</td>\n<td>Contains information about the page.</td>\n</tr>\n<tr>\n<td><em>paging.page</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Requested page number.</td>\n</tr>\n<tr>\n<td><em>paging.size</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Requested page size.</td>\n</tr>\n<tr>\n<td><em>paging.totalPages</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> The total number of pages of the results matching the requested parameters.</td>\n</tr>\n<tr>\n<td><em>paging.totalResults</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> The total number of the results matching the requested parameters.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["call-link","1","images"],"host":["go2","vhdmedia","se"],"query":[{"disabled":true,"description":{"content":"<p>Results page to retrieve (0..N). Default: <code>0</code>.</p>\n","type":"text/plain"},"key":"page","value":""},{"disabled":true,"description":{"content":"<p>Number of records per page. Default: <code>20</code>.</p>\n","type":"text/plain"},"key":"size","value":""}],"variable":[]}},"response":[{"id":"db0c3370-e4d0-4876-89a4-4d745cd4642e","name":"200 - Image Page Response","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/call-link/1/images","protocol":"https","host":["go2","vhdmedia","se"],"path":["call-link","1","images"],"query":[{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"results\": [\n    {\n      \"id\": \"638f29f0ee8f0c1da369a722\",\n      \"name\": \"logo.png\",\n      \"type\": \"LOGO\",\n      \"size\": 512\n    },\n    {\n      \"id\": \"968f29f0ee8f0c1da369a545\",\n      \"name\": \"background.jpg\",\n      \"type\": \"BACKGROUND\",\n      \"size\": 1512\n    }\n  ],\n  \"paging\": {\n    \"page\": 0,\n    \"size\": 10,\n    \"totalPages\": 1,\n    \"totalResults\": 2\n  }\n}"},{"id":"33ef6d8e-65c2-450f-8c51-183872683868","name":"400 - Error responses","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/call-link/1/images","protocol":"https","host":["go2","vhdmedia","se"],"path":["call-link","1","images"],"query":[{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"BAD_REQUEST\",\n      \"text\": \"Bad request\",\n      \"validationErrors\": {\n        \"field\": [\n          \"field must not be null.\"\n        ]\n      }\n    }\n  }\n}"},{"id":"2057ccef-1977-45c4-a2c6-feca8ce364ab","name":"401 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/call-link/1/images","protocol":"https","host":["go2","vhdmedia","se"],"path":["call-link","1","images"],"query":[{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"caad3c0a-c44b-420b-9cc4-5ff444dfa521","name":"403 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/call-link/1/images","protocol":"https","host":["go2","vhdmedia","se"],"path":["call-link","1","images"],"query":[{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"70f46d6e-a0ef-434d-b50a-7338b7a96853","name":"429 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/call-link/1/images","protocol":"https","host":["go2","vhdmedia","se"],"path":["call-link","1","images"],"query":[{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"c0eaa256-5fad-4e18-9c35-7f129bb32a95","name":"500 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/call-link/1/images","protocol":"https","host":["go2","vhdmedia","se"],"path":["call-link","1","images"],"query":[{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"62513967-518c-4fab-8ef0-685f4afaa288"},{"name":"Get call link subdomains","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});"],"type":"text/javascript","packages":{}}}],"id":"cd29f6ed-97b4-4ed6-a660-a057ff5d4389","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/subdomains","description":"<p>Get subdomains.</p>\n<p>Use this method to get all subdomains.</p>\n<h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>[].id</em></td>\n<td>String</td>\n<td></td>\n</tr>\n<tr>\n<td><em>[].name</em></td>\n<td>String</td>\n<td></td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["call-link","1","subdomains"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"c695d394-ba3b-418c-9995-a0a7a93119a4","name":"200 OK","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/subdomains"},"status":"OK","code":200,"_postman_previewlanguage":"text","header":null,"cookie":[],"responseTime":null,"body":null},{"id":"12667b6b-c230-4d97-8638-8bbf083210d2","name":"401 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/subdomains"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"c721c028-6818-4112-95d4-703f2481b326","name":"403 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/subdomains"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"479b440d-8c09-40bb-9c97-0392980fe680","name":"404 - Error responses","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/subdomains"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"NOT_FOUND\",\n      \"text\": \"Not found.\"\n    }\n  }\n}"},{"id":"1bdf8829-de9b-449e-b5c5-d3a7a0a8ecd8","name":"429 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/subdomains"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"631444cb-ac2b-4192-b50e-b74bca8094ad","name":"500 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/subdomains"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"cd29f6ed-97b4-4ed6-a660-a057ff5d4389"},{"name":"Get call link recordings","event":[{"listen":"test","script":{"exec":["// Tests for Get call link recordings.","pm.test(\"Status code is 200\", function () { pm.expect(pm.response.code).to.eql(200); });","pm.test(\"Response time is below 5000ms\", function () { pm.expect(pm.response.responseTime).to.be.below(5000); });","pm.test(\"Recordings are returned as a page of results\", function () {","    var j = pm.response.json();","    pm.expect(j.results).to.be.an(\"array\");","    pm.expect(j.paging).to.include.all.keys(\"page\", \"size\", \"totalPages\", \"totalResults\");","});"],"type":"text/javascript","packages":{}}}],"id":"2f635268-ce48-4814-b86d-6ecee24e3b05","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/call-link/1/recordings","description":"<p>Get call link recordings.</p>\n<p>Use this method to filter and retrieve call link recordings.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>sortBy</em></td>\n<td>String</td>\n<td>Field that will be used for sorting. One of: <code>DESTINATION_DATA</code>, <code>DESTINATION_TYPE</code>, <code>CALL_LINK_CONFIG_ID</code>, <code>CALL_LINK_ID</code>, <code>START_TIME_BEFORE</code>, <code>START_TIME_AFTER</code>.</td>\n</tr>\n<tr>\n<td><em>sortDirection</em></td>\n<td>String</td>\n<td>Order in which files will be sorted based on sortBy field. One of: <code>ASC</code>, <code>DESC</code>.</td>\n</tr>\n<tr>\n<td><em>destinationData</em></td>\n<td>String</td>\n<td>Destination the call was made towards. For WEBRTC calls, this is the WebRTC identity. For PHONE calls, this is the phone number. For ROOM calls, this is the room name.</td>\n</tr>\n<tr>\n<td><em>destinationType</em></td>\n<td>String</td>\n<td>Type of call link destination. One of: <code>ROOM</code>, <code>WEBRTC</code>, <code>PHONE</code>.</td>\n</tr>\n<tr>\n<td><em>callLinkConfigId</em></td>\n<td>String</td>\n<td>ID of the call link configuration used to establish the recorded call.</td>\n</tr>\n<tr>\n<td><em>callLinkId</em></td>\n<td>String</td>\n<td>ID of a call link used to establish the recorded call.</td>\n</tr>\n<tr>\n<td><em>startTimeAfter</em></td>\n<td>String</td>\n<td>Date and time when the (first) call recording started.</td>\n</tr>\n<tr>\n<td><em>startTimeBefore</em></td>\n<td>String</td>\n<td>Date and time when the (last) call recording started.</td>\n</tr>\n<tr>\n<td><em>location</em></td>\n<td>String</td>\n<td>Recording location. One of: <code>SAO_PAULO</code>, <code>BOGOTA</code>, <code>FRANKFURT</code>, <code>JOHANNESBURG</code>, <code>JOHANNESBURG_1</code>, <code>NEW_YORK</code>, <code>PORTLAND</code>, <code>MOSCOW</code>, <code>SINGAPORE</code>, <code>ISTANBUL</code>, <code>KUALA_LUMPUR</code>, <code>JAKARTA</code>, <code>MUMBAI</code>, <code>HONG_KONG_1</code>, <code>HONG_KONG</code>, <code>RIYADH</code>, <code>CHENNAI</code>.</td>\n</tr>\n<tr>\n<td><em>page</em></td>\n<td>Int</td>\n<td>Page number for pagination, starting from 0. Default: <code>0</code>.</td>\n</tr>\n<tr>\n<td><em>size</em></td>\n<td>Int</td>\n<td>Number of items per page, maximum is 100. Default: <code>10</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results</em></td>\n<td>Array</td>\n<td>The list of the results for this page.</td>\n</tr>\n<tr>\n<td><em>results[].application</em></td>\n<td>Object</td>\n<td><strong>Required.</strong> Recording application metadata</td>\n</tr>\n<tr>\n<td><em>results[].application.type</em></td>\n<td>String</td>\n<td><strong>Required.</strong> One of: <code>CALL_LINK</code>.</td>\n</tr>\n<tr>\n<td><em>results[].recording</em></td>\n<td>Object</td>\n<td><strong>Required.</strong> Recording metadata.</td>\n</tr>\n<tr>\n<td><em>results[].recording.composedFiles</em></td>\n<td>Array</td>\n<td>List of composed files.</td>\n</tr>\n<tr>\n<td><em>results[].recording.composedFiles[].id</em></td>\n<td>String</td>\n<td>File identifier.</td>\n</tr>\n<tr>\n<td><em>results[].recording.composedFiles[].name</em></td>\n<td>String</td>\n<td>File name.</td>\n</tr>\n<tr>\n<td><em>results[].recording.composedFiles[].fileFormat</em></td>\n<td>String</td>\n<td>File format. One of: <code>MP3</code>, <code>WAV</code>, <code>MP4</code>.</td>\n</tr>\n<tr>\n<td><em>results[].recording.composedFiles[].size</em></td>\n<td>Int</td>\n<td>File size in bytes.</td>\n</tr>\n<tr>\n<td><em>results[].recording.composedFiles[].startTime</em></td>\n<td>String</td>\n<td>Date and time in the UTC timezone when the recording started. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ</code>.</td>\n</tr>\n<tr>\n<td><em>results[].recording.composedFiles[].endTime</em></td>\n<td>String</td>\n<td>Date and time in the UTC timezone when the recording ended. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ</code>.</td>\n</tr>\n<tr>\n<td><em>results[].recording.composedFiles[].creationTime</em></td>\n<td>String</td>\n<td>Date and time in the UTC timezone when the recording file was created. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ</code>.</td>\n</tr>\n<tr>\n<td><em>results[].recording.composedFiles[].duration</em></td>\n<td>Int</td>\n<td>File duration in seconds.</td>\n</tr>\n<tr>\n<td><em>results[].recording.composedFiles[].location</em></td>\n<td>String</td>\n<td>Location of recording file after processing. One of: <code>UPLOADING</code>, <code>UPLOADED</code>, <code>HOSTED</code>.</td>\n</tr>\n<tr>\n<td><em>results[].recording.composedFiles[].customData</em></td>\n<td>Object</td>\n<td>Client-defined data.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings</em></td>\n<td>Array</td>\n<td>List of call recordings.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].callId</em></td>\n<td>String</td>\n<td>Call identifier.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].endpoint</em></td>\n<td>String</td>\n<td>Call endpoint. Represents a caller for the inbound calls and a callee for the outbound calls.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].direction</em></td>\n<td>String</td>\n<td>Call direction. One of: <code>INBOUND</code>, <code>OUTBOUND</code>.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].status</em></td>\n<td>String</td>\n<td>Status of call recording. One of: <code>SUCCESSFUL</code>, <code>PARTIALLY_FAILED</code>, <code>FAILED</code>.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].reason</em></td>\n<td>String</td>\n<td>Reason for recording failure. Empty if call did not fail.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].files</em></td>\n<td>Array</td>\n<td>Recording files.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].files[].id</em></td>\n<td>String</td>\n<td>File identifier.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].files[].name</em></td>\n<td>String</td>\n<td>File name.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].files[].fileFormat</em></td>\n<td>String</td>\n<td>File format. One of: <code>MP3</code>, <code>WAV</code>, <code>MP4</code>.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].files[].size</em></td>\n<td>Int</td>\n<td>File size in bytes.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].files[].startTime</em></td>\n<td>String</td>\n<td>Date and time in the UTC timezone when the recording started. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ</code>.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].files[].endTime</em></td>\n<td>String</td>\n<td>Date and time in the UTC timezone when the recording ended. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ</code>.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].files[].creationTime</em></td>\n<td>String</td>\n<td>Date and time in the UTC timezone when the recording file was created. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSS+ZZZZ</code>.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].files[].duration</em></td>\n<td>Int</td>\n<td>File duration in seconds.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].files[].location</em></td>\n<td>String</td>\n<td>Location of recording file after processing. One of: <code>UPLOADING</code>, <code>UPLOADED</code>, <code>HOSTED</code>.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].files[].customData</em></td>\n<td>Object</td>\n<td>Client-defined data.</td>\n</tr>\n<tr>\n<td><em>paging</em></td>\n<td>Object</td>\n<td>Contains information about the page.</td>\n</tr>\n<tr>\n<td><em>paging.page</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Requested page number.</td>\n</tr>\n<tr>\n<td><em>paging.size</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Requested page size.</td>\n</tr>\n<tr>\n<td><em>paging.totalPages</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> The total number of pages of the results matching the requested parameters.</td>\n</tr>\n<tr>\n<td><em>paging.totalResults</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> The total number of the results matching the requested parameters.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["call-link","1","recordings"],"host":["go2","vhdmedia","se"],"query":[{"disabled":true,"description":{"content":"<p>Field that will be used for sorting.</p>\n","type":"text/plain"},"key":"sortBy","value":""},{"disabled":true,"description":{"content":"<p>Order in which files will be sorted based on sortBy field.</p>\n","type":"text/plain"},"key":"sortDirection","value":""},{"disabled":true,"description":{"content":"<p>Destination the call was made towards. For WEBRTC calls, this is the WebRTC identity. For PHONE calls, this is the phone number. For ROOM calls, this is the room name.</p>\n","type":"text/plain"},"key":"destinationData","value":""},{"disabled":true,"description":{"content":"<p>Type of call link destination.</p>\n","type":"text/plain"},"key":"destinationType","value":""},{"disabled":true,"description":{"content":"<p>ID of the call link configuration used to establish the recorded call.</p>\n","type":"text/plain"},"key":"callLinkConfigId","value":"{{callLinkConfigId}}"},{"disabled":true,"description":{"content":"<p>ID of a call link used to establish the recorded call.</p>\n","type":"text/plain"},"key":"callLinkId","value":""},{"disabled":true,"description":{"content":"<p>Date and time when the (first) call recording started.</p>\n","type":"text/plain"},"key":"startTimeAfter","value":""},{"disabled":true,"description":{"content":"<p>Date and time when the (last) call recording started.</p>\n","type":"text/plain"},"key":"startTimeBefore","value":""},{"disabled":true,"description":{"content":"<p>Recording location.</p>\n","type":"text/plain"},"key":"location","value":""},{"disabled":true,"description":{"content":"<p>Page number for pagination, starting from 0. Default: <code>0</code>.</p>\n","type":"text/plain"},"key":"page","value":""},{"disabled":true,"description":{"content":"<p>Number of items per page, maximum is 100. Default: <code>10</code>.</p>\n","type":"text/plain"},"key":"size","value":""}],"variable":[]}},"response":[{"id":"0f1b3e29-3c3e-4c5c-adce-1063915cea94","name":"200 - Recording Page","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/call-link/1/recordings","protocol":"https","host":["go2","vhdmedia","se"],"path":["call-link","1","recordings"],"query":[{"key":"sortBy","value":"","description":"Field that will be used for sorting.","disabled":true},{"key":"sortDirection","value":"","description":"Order in which files will be sorted based on sortBy field.","disabled":true},{"key":"destinationData","value":"","description":"Destination the call was made towards. For WEBRTC calls, this is the WebRTC identity. For PHONE calls, this is the phone number. For ROOM calls, this is the room name.","disabled":true},{"key":"destinationType","value":"","description":"Type of call link destination.","disabled":true},{"key":"callLinkConfigId","value":"{{callLinkConfigId}}","description":"ID of the call link configuration used to establish the recorded call.","disabled":true},{"key":"callLinkId","value":"","description":"ID of a call link used to establish the recorded call.","disabled":true},{"key":"startTimeAfter","value":"","description":"Date and time when the (first) call recording started.","disabled":true},{"key":"startTimeBefore","value":"","description":"Date and time when the (last) call recording started.","disabled":true},{"key":"location","value":"","description":"Recording location.","disabled":true},{"key":"page","value":"","description":"Page number for pagination, starting from 0. Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of items per page, maximum is 100. Default: `10`.","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"application\": {\n      \"id\": \"2e75743a-7626-425c-879c-19e7f6111359\",\n      \"callLinkId\": \"34QubX\",\n      \"callLinkConfigId\": \"63f742074d09a250fdc74025\",\n      \"destinationType\": \"PHONE\",\n      \"destinationData\": \"+1234567890\",\n      \"type\": \"CALL_LINK\"\n    },\n    \"recording\": {\n      \"composedFiles\": [\n        {\n          \"id\": \"d8d84155-3831-43fb-91c9-bb897149a79d\",\n          \"name\": \"d8d84155-3831-43fb-91c9-bb897149a79d_1652725357412.wav\",\n          \"fileFormat\": \"WAV\",\n          \"size\": 67564,\n          \"startTime\": \"2024-05-01T14:25:45.125+0000\",\n          \"endTime\": \"2024-05-01T14:26:45.125+0000\",\n          \"creationTime\": \"2024-05-01T14:26:48.125+0000\",\n          \"duration\": 60,\n          \"location\": \"HOSTED\",\n          \"customData\": {\n            \"key1\": \"value1\"\n          }\n        }\n      ],\n      \"callRecordings\": [\n        {\n          \"callId\": \"d8d84155-3831-43fb-91c9-bb897149a79d\",\n          \"endpoint\": {\n            \"identity\": \"phoneCaller\",\n            \"displayName\": null,\n            \"type\": \"WEBRTC\"\n          },\n          \"direction\": \"INBOUND\",\n          \"status\": \"SUCCESSFUL\",\n          \"files\": [\n            {\n              \"id\": \"564202f9-4788-4766-866c-6a58f4058dac\",\n              \"name\": \"564202f9-4788-4766-866c-6a58f4058dac.wav\",\n              \"fileFormat\": \"WAV\",\n              \"size\": 123456,\n              \"startTime\": \"2024-05-01T14:25:45.125+0000\",\n              \"endTime\": \"2024-05-01T14:26:45.125+0000\",\n              \"creationTime\": \"2024-05-01T14:26:48.125+0000\",\n              \"duration\": 60,\n              \"location\": \"HOSTED\",\n              \"customData\": {\n                \"key1\": \"value1\"\n              }\n            }\n          ]\n        },\n        {\n          \"callId\": \"9b793eeb-31e7-4a39-bf24-a267777b0313\",\n          \"endpoint\": {\n            \"phoneNumber\": \"32475388773\",\n            \"type\": \"PHONE\"\n          },\n          \"direction\": \"OUTBOUND\",\n          \"status\": \"SUCCESSFUL\",\n          \"files\": [\n            {\n              \"id\": \"c8f2817c-e2cd-47f1-ac40-2558d74c5c7b\",\n              \"name\": \"c8f2817c-e2cd-47f1-ac40-2558d74c5c7b.wav\",\n              \"fileFormat\": \"WAV\",\n              \"size\": 123456,\n              \"startTime\": \"2024-05-01T14:25:45.125+0000\",\n              \"endTime\": \"2024-05-01T14:26:45.125+0000\",\n              \"creationTime\": \"2024-05-01T14:26:48.125+0000\",\n              \"duration\": 60,\n              \"location\": \"HOSTED\",\n              \"customData\": {\n                \"key1\": \"value1\"\n              }\n            }\n          ]\n        }\n      ]\n    }\n  }\n]"},{"id":"1737d241-9757-4ff1-8c28-f545f035d69b","name":"400 - Error responses","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/call-link/1/recordings","protocol":"https","host":["go2","vhdmedia","se"],"path":["call-link","1","recordings"],"query":[{"key":"sortBy","value":"","description":"Field that will be used for sorting.","disabled":true},{"key":"sortDirection","value":"","description":"Order in which files will be sorted based on sortBy field.","disabled":true},{"key":"destinationData","value":"","description":"Destination the call was made towards. For WEBRTC calls, this is the WebRTC identity. For PHONE calls, this is the phone number. For ROOM calls, this is the room name.","disabled":true},{"key":"destinationType","value":"","description":"Type of call link destination.","disabled":true},{"key":"callLinkConfigId","value":"{{callLinkConfigId}}","description":"ID of the call link configuration used to establish the recorded call.","disabled":true},{"key":"callLinkId","value":"","description":"ID of a call link used to establish the recorded call.","disabled":true},{"key":"startTimeAfter","value":"","description":"Date and time when the (first) call recording started.","disabled":true},{"key":"startTimeBefore","value":"","description":"Date and time when the (last) call recording started.","disabled":true},{"key":"location","value":"","description":"Recording location.","disabled":true},{"key":"page","value":"","description":"Page number for pagination, starting from 0. Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of items per page, maximum is 100. Default: `10`.","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"BAD_REQUEST\",\n      \"text\": \"Bad request\",\n      \"validationErrors\": {\n        \"field\": [\n          \"field must not be null.\"\n        ]\n      }\n    }\n  }\n}"},{"id":"722a7c62-c1c7-4f75-bfd1-a4a4462b6826","name":"401 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/call-link/1/recordings","protocol":"https","host":["go2","vhdmedia","se"],"path":["call-link","1","recordings"],"query":[{"key":"sortBy","value":"","description":"Field that will be used for sorting.","disabled":true},{"key":"sortDirection","value":"","description":"Order in which files will be sorted based on sortBy field.","disabled":true},{"key":"destinationData","value":"","description":"Destination the call was made towards. For WEBRTC calls, this is the WebRTC identity. For PHONE calls, this is the phone number. For ROOM calls, this is the room name.","disabled":true},{"key":"destinationType","value":"","description":"Type of call link destination.","disabled":true},{"key":"callLinkConfigId","value":"{{callLinkConfigId}}","description":"ID of the call link configuration used to establish the recorded call.","disabled":true},{"key":"callLinkId","value":"","description":"ID of a call link used to establish the recorded call.","disabled":true},{"key":"startTimeAfter","value":"","description":"Date and time when the (first) call recording started.","disabled":true},{"key":"startTimeBefore","value":"","description":"Date and time when the (last) call recording started.","disabled":true},{"key":"location","value":"","description":"Recording location.","disabled":true},{"key":"page","value":"","description":"Page number for pagination, starting from 0. Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of items per page, maximum is 100. Default: `10`.","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"5ed97093-e465-4b85-b047-70b934bf7b6d","name":"403 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/call-link/1/recordings","protocol":"https","host":["go2","vhdmedia","se"],"path":["call-link","1","recordings"],"query":[{"key":"sortBy","value":"","description":"Field that will be used for sorting.","disabled":true},{"key":"sortDirection","value":"","description":"Order in which files will be sorted based on sortBy field.","disabled":true},{"key":"destinationData","value":"","description":"Destination the call was made towards. For WEBRTC calls, this is the WebRTC identity. For PHONE calls, this is the phone number. For ROOM calls, this is the room name.","disabled":true},{"key":"destinationType","value":"","description":"Type of call link destination.","disabled":true},{"key":"callLinkConfigId","value":"{{callLinkConfigId}}","description":"ID of the call link configuration used to establish the recorded call.","disabled":true},{"key":"callLinkId","value":"","description":"ID of a call link used to establish the recorded call.","disabled":true},{"key":"startTimeAfter","value":"","description":"Date and time when the (first) call recording started.","disabled":true},{"key":"startTimeBefore","value":"","description":"Date and time when the (last) call recording started.","disabled":true},{"key":"location","value":"","description":"Recording location.","disabled":true},{"key":"page","value":"","description":"Page number for pagination, starting from 0. Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of items per page, maximum is 100. Default: `10`.","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"10ef481f-565a-4635-8eb3-9deab4f8f92b","name":"429 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/call-link/1/recordings","protocol":"https","host":["go2","vhdmedia","se"],"path":["call-link","1","recordings"],"query":[{"key":"sortBy","value":"","description":"Field that will be used for sorting.","disabled":true},{"key":"sortDirection","value":"","description":"Order in which files will be sorted based on sortBy field.","disabled":true},{"key":"destinationData","value":"","description":"Destination the call was made towards. For WEBRTC calls, this is the WebRTC identity. For PHONE calls, this is the phone number. For ROOM calls, this is the room name.","disabled":true},{"key":"destinationType","value":"","description":"Type of call link destination.","disabled":true},{"key":"callLinkConfigId","value":"{{callLinkConfigId}}","description":"ID of the call link configuration used to establish the recorded call.","disabled":true},{"key":"callLinkId","value":"","description":"ID of a call link used to establish the recorded call.","disabled":true},{"key":"startTimeAfter","value":"","description":"Date and time when the (first) call recording started.","disabled":true},{"key":"startTimeBefore","value":"","description":"Date and time when the (last) call recording started.","disabled":true},{"key":"location","value":"","description":"Recording location.","disabled":true},{"key":"page","value":"","description":"Page number for pagination, starting from 0. Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of items per page, maximum is 100. Default: `10`.","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"db9d5f09-5510-4fc2-a7e5-ddee8e1ac750","name":"500 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/call-link/1/recordings","protocol":"https","host":["go2","vhdmedia","se"],"path":["call-link","1","recordings"],"query":[{"key":"sortBy","value":"","description":"Field that will be used for sorting.","disabled":true},{"key":"sortDirection","value":"","description":"Order in which files will be sorted based on sortBy field.","disabled":true},{"key":"destinationData","value":"","description":"Destination the call was made towards. For WEBRTC calls, this is the WebRTC identity. For PHONE calls, this is the phone number. For ROOM calls, this is the room name.","disabled":true},{"key":"destinationType","value":"","description":"Type of call link destination.","disabled":true},{"key":"callLinkConfigId","value":"{{callLinkConfigId}}","description":"ID of the call link configuration used to establish the recorded call.","disabled":true},{"key":"callLinkId","value":"","description":"ID of a call link used to establish the recorded call.","disabled":true},{"key":"startTimeAfter","value":"","description":"Date and time when the (first) call recording started.","disabled":true},{"key":"startTimeBefore","value":"","description":"Date and time when the (last) call recording started.","disabled":true},{"key":"location","value":"","description":"Recording location.","disabled":true},{"key":"page","value":"","description":"Page number for pagination, starting from 0. Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of items per page, maximum is 100. Default: `10`.","disabled":true}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"2f635268-ce48-4814-b86d-6ecee24e3b05"}],"id":"d8ac51a2-4e4f-4102-a860-8e8117408777","description":"<p>A call link is a web address that starts a call when someone opens it. Create a configuration (how the page looks and behaves), then create links that use it. The requests run in order and clean up after themselves.</p>\n","_postman_id":"d8ac51a2-4e4f-4102-a860-8e8117408777"},{"name":"CALL ROUTING","item":[{"name":"Get call routing recordings","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"results\", \"paging\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","","pm.test(\"'results' is an array\", function () {","    pm.expect(responseBody[\"results\"]).to.be.an('array');","});"],"type":"text/javascript","packages":{}}}],"id":"cba4bc7f-deed-4982-b2ec-a88255ae2110","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/callrouting/1/recordings","description":"<p>Get recordings.</p>\n<p>This method allows searching and filtering based on various recording data properties.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>sortBy</em></td>\n<td>String</td>\n<td>Field that will be used for sorting. One of: <code>ENDPOINT_TYPE</code>, <code>ROUTE_ID</code>, <code>CORRELATION_ID</code>, <code>START_TIME</code>, <code>END_TIME</code>.</td>\n</tr>\n<tr>\n<td><em>sortDirection</em></td>\n<td>String</td>\n<td>Order in which files will be sorted based on sortBy field. One of: <code>ASC</code>, <code>DESC</code>.</td>\n</tr>\n<tr>\n<td><em>endpointType</em></td>\n<td>String</td>\n<td>Endpoint type of at least one participant in the recorded call.</td>\n</tr>\n<tr>\n<td><em>phoneNumber</em></td>\n<td>String</td>\n<td>Phone number that was participant of the recorded call.</td>\n</tr>\n<tr>\n<td><em>sipTrunkId</em></td>\n<td>String</td>\n<td>SIP Trunk ID that was participant of the recorded call.</td>\n</tr>\n<tr>\n<td><em>sipUsername</em></td>\n<td>String</td>\n<td>Username on the SIP trunk that was participant of the recorded call.</td>\n</tr>\n<tr>\n<td><em>webrtcIdentity</em></td>\n<td>String</td>\n<td>WebRTC Identity that was participant of the recorded call.</td>\n</tr>\n<tr>\n<td><em>routeId</em></td>\n<td>String</td>\n<td>Route ID that was used to establish the recorded call.</td>\n</tr>\n<tr>\n<td><em>routeName</em></td>\n<td>String</td>\n<td>Route name to be used to match recordings. Name will be matched comparing it to all route names.</td>\n</tr>\n<tr>\n<td><em>correlationId</em></td>\n<td>String</td>\n<td>Correlation ID to match.</td>\n</tr>\n<tr>\n<td><em>startTimeAfter</em></td>\n<td>String</td>\n<td>Date and time when the (first) call recording started.</td>\n</tr>\n<tr>\n<td><em>startTimeBefore</em></td>\n<td>String</td>\n<td>Date and time when the (last) call recording started.</td>\n</tr>\n<tr>\n<td><em>location</em></td>\n<td>String</td>\n<td>Recording location. One of: <code>SAO_PAULO</code>, <code>BOGOTA</code>, <code>FRANKFURT</code>, <code>JOHANNESBURG</code>, <code>JOHANNESBURG_1</code>, <code>NEW_YORK</code>, <code>PORTLAND</code>, <code>MOSCOW</code>, <code>SINGAPORE</code>, <code>ISTANBUL</code>, <code>KUALA_LUMPUR</code>, <code>JAKARTA</code>, <code>MUMBAI</code>, <code>HONG_KONG_1</code>, <code>HONG_KONG</code>, <code>RIYADH</code>, <code>CHENNAI</code>.</td>\n</tr>\n<tr>\n<td><em>page</em></td>\n<td>Int</td>\n<td>Results page to retrieve (0..N). Default: <code>0</code>.</td>\n</tr>\n<tr>\n<td><em>size</em></td>\n<td>Int</td>\n<td>Number of records per page. Default: <code>20</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results</em></td>\n<td>Array</td>\n<td>The list of the results for this page.</td>\n</tr>\n<tr>\n<td><em>results[].application</em></td>\n<td>Object</td>\n<td><strong>Required.</strong> Recording application metadata</td>\n</tr>\n<tr>\n<td><em>results[].application.type</em></td>\n<td>String</td>\n<td><strong>Required.</strong> One of: <code>CALL_ROUTING</code>.</td>\n</tr>\n<tr>\n<td><em>results[].recording</em></td>\n<td>Object</td>\n<td><strong>Required.</strong> Recording metadata</td>\n</tr>\n<tr>\n<td><em>results[].recording.composedFiles</em></td>\n<td>Array</td>\n<td>Composed recording files.</td>\n</tr>\n<tr>\n<td><em>results[].recording.composedFiles[].id</em></td>\n<td>String</td>\n<td>File ID.</td>\n</tr>\n<tr>\n<td><em>results[].recording.composedFiles[].name</em></td>\n<td>String</td>\n<td>File name.</td>\n</tr>\n<tr>\n<td><em>results[].recording.composedFiles[].fileFormat</em></td>\n<td>String</td>\n<td>File format. One of: <code>MP3</code>, <code>WAV</code>, <code>MP4</code>.</td>\n</tr>\n<tr>\n<td><em>results[].recording.composedFiles[].size</em></td>\n<td>Int</td>\n<td>File size in bytes.</td>\n</tr>\n<tr>\n<td><em>results[].recording.composedFiles[].startTime</em></td>\n<td>String</td>\n<td>Date and time when the recording started.</td>\n</tr>\n<tr>\n<td><em>results[].recording.composedFiles[].endTime</em></td>\n<td>String</td>\n<td>Date and time when the recording ended.</td>\n</tr>\n<tr>\n<td><em>results[].recording.composedFiles[].creationTime</em></td>\n<td>String</td>\n<td>File creation time.</td>\n</tr>\n<tr>\n<td><em>results[].recording.composedFiles[].duration</em></td>\n<td>Int</td>\n<td>File duration in seconds.</td>\n</tr>\n<tr>\n<td><em>results[].recording.composedFiles[].location</em></td>\n<td>String</td>\n<td>Location of recording file after processing. One of: <code>UPLOADING</code>, <code>UPLOADED</code>, <code>HOSTED</code>.</td>\n</tr>\n<tr>\n<td><em>results[].recording.composedFiles[].customData</em></td>\n<td>Object</td>\n<td>Client-defined data.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings</em></td>\n<td>Array</td>\n<td>Call recording data.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].callId</em></td>\n<td>String</td>\n<td>Call identifier.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].endpoint</em></td>\n<td>String</td>\n<td>Call endpoint. Represents a caller for the inbound calls and a callee for the outbound calls.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].direction</em></td>\n<td>String</td>\n<td>Call direction. One of: <code>INBOUND</code>, <code>OUTBOUND</code>.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].status</em></td>\n<td>String</td>\n<td>Status of call recording.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].reason</em></td>\n<td>String</td>\n<td>Reason for recording failure.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].files</em></td>\n<td>Array</td>\n<td>Recording files.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].files[].id</em></td>\n<td>String</td>\n<td>File ID.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].files[].name</em></td>\n<td>String</td>\n<td>File name.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].files[].fileFormat</em></td>\n<td>String</td>\n<td>File format. One of: <code>MP3</code>, <code>WAV</code>, <code>MP4</code>.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].files[].size</em></td>\n<td>Int</td>\n<td>File size in bytes.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].files[].startTime</em></td>\n<td>String</td>\n<td>Date and time when the recording started.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].files[].endTime</em></td>\n<td>String</td>\n<td>Date and time when the recording ended.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].files[].creationTime</em></td>\n<td>String</td>\n<td>File creation time.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].files[].duration</em></td>\n<td>Int</td>\n<td>File duration in seconds.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].files[].location</em></td>\n<td>String</td>\n<td>Location of recording file after processing. One of: <code>UPLOADING</code>, <code>UPLOADED</code>, <code>HOSTED</code>.</td>\n</tr>\n<tr>\n<td><em>results[].recording.callRecordings[].files[].customData</em></td>\n<td>Object</td>\n<td>Client-defined data.</td>\n</tr>\n<tr>\n<td><em>paging</em></td>\n<td>Object</td>\n<td>Contains information about the page.</td>\n</tr>\n<tr>\n<td><em>paging.page</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Requested page number.</td>\n</tr>\n<tr>\n<td><em>paging.size</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Requested page size.</td>\n</tr>\n<tr>\n<td><em>paging.totalPages</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> The total number of pages of the results matching the requested parameters.</td>\n</tr>\n<tr>\n<td><em>paging.totalResults</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> The total number of the results matching the requested parameters.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["callrouting","1","recordings"],"host":["go2","vhdmedia","se"],"query":[{"disabled":true,"description":{"content":"<p>Field that will be used for sorting.</p>\n","type":"text/plain"},"key":"sortBy","value":""},{"disabled":true,"description":{"content":"<p>Order in which files will be sorted based on sortBy field.</p>\n","type":"text/plain"},"key":"sortDirection","value":""},{"disabled":true,"description":{"content":"<p>Endpoint type of at least one participant in the recorded call.</p>\n","type":"text/plain"},"key":"endpointType","value":""},{"disabled":true,"description":{"content":"<p>Phone number that was participant of the recorded call.</p>\n","type":"text/plain"},"key":"phoneNumber","value":""},{"disabled":true,"description":{"content":"<p>SIP Trunk ID that was participant of the recorded call.</p>\n","type":"text/plain"},"key":"sipTrunkId","value":""},{"disabled":true,"description":{"content":"<p>Username on the SIP trunk that was participant of the recorded call.</p>\n","type":"text/plain"},"key":"sipUsername","value":""},{"disabled":true,"description":{"content":"<p>WebRTC Identity that was participant of the recorded call.</p>\n","type":"text/plain"},"key":"webrtcIdentity","value":""},{"disabled":true,"description":{"content":"<p>Route ID that was used to establish the recorded call.</p>\n","type":"text/plain"},"key":"routeId","value":""},{"disabled":true,"description":{"content":"<p>Route name to be used to match recordings. Name will be matched comparing it to all route names.</p>\n","type":"text/plain"},"key":"routeName","value":""},{"disabled":true,"description":{"content":"<p>Correlation ID to match.</p>\n","type":"text/plain"},"key":"correlationId","value":""},{"disabled":true,"description":{"content":"<p>Date and time when the (first) call recording started.</p>\n","type":"text/plain"},"key":"startTimeAfter","value":""},{"disabled":true,"description":{"content":"<p>Date and time when the (last) call recording started.</p>\n","type":"text/plain"},"key":"startTimeBefore","value":""},{"disabled":true,"description":{"content":"<p>Recording location.</p>\n","type":"text/plain"},"key":"location","value":""},{"disabled":true,"description":{"content":"<p>Results page to retrieve (0..N). Default: <code>0</code>.</p>\n","type":"text/plain"},"key":"page","value":""},{"disabled":true,"description":{"content":"<p>Number of records per page. Default: <code>20</code>.</p>\n","type":"text/plain"},"key":"size","value":""}],"variable":[]}},"response":[{"id":"b5d80c2e-f591-4046-b99e-00041542b178","name":"200 - Successfully fetching results","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/callrouting/1/recordings","protocol":"https","host":["go2","vhdmedia","se"],"path":["callrouting","1","recordings"],"query":[{"key":"sortBy","value":"","description":"Field that will be used for sorting.","disabled":true},{"key":"sortDirection","value":"","description":"Order in which files will be sorted based on sortBy field.","disabled":true},{"key":"endpointType","value":"","description":"Endpoint type of at least one participant in the recorded call.","disabled":true},{"key":"phoneNumber","value":"","description":"Phone number that was participant of the recorded call.","disabled":true},{"key":"sipTrunkId","value":"","description":"SIP Trunk ID that was participant of the recorded call.","disabled":true},{"key":"sipUsername","value":"","description":"Username on the SIP trunk that was participant of the recorded call.","disabled":true},{"key":"webrtcIdentity","value":"","description":"WebRTC Identity that was participant of the recorded call.","disabled":true},{"key":"routeId","value":"","description":"Route ID that was used to establish the recorded call.","disabled":true},{"key":"routeName","value":"","description":"Route name to be used to match recordings. Name will be matched comparing it to all route names.","disabled":true},{"key":"correlationId","value":"","description":"Correlation ID to match.","disabled":true},{"key":"startTimeAfter","value":"","description":"Date and time when the (first) call recording started.","disabled":true},{"key":"startTimeBefore","value":"","description":"Date and time when the (last) call recording started.","disabled":true},{"key":"location","value":"","description":"Recording location.","disabled":true},{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"results\": [\n    {\n      \"application\": {\n        \"routeId\": \"edef623d-0e1a-4a83-91e5-73c75ed31473\",\n        \"routeName\": \"Route with disabled recording composition\",\n        \"correlationId\": \"8fdbf7d9-9889-4c2e-8f16-246d5fe066de\",\n        \"startTime\": \"2025-04-04T09:25:50.060+0000\",\n        \"endTime\": \"2025-04-04T09:25:57.780+0000\",\n        \"type\": \"CALL_ROUTING\"\n      },\n      \"recording\": {\n        \"composedFiles\": [],\n        \"callRecordings\": [\n          {\n            \"callId\": \"q9lo60o6ihb23q06epc23n46ihd0nilcibb8nihd5jpu6n5d3boqip1e1bqs667ofk00\",\n            \"endpoint\": {\n              \"phoneNumber\": \"38761111222\",\n              \"type\": \"PHONE\"\n            },\n            \"direction\": \"INBOUND\",\n            \"status\": \"SUCCESSFUL\",\n            \"files\": [\n              {\n                \"id\": \"b83f049e-6b2a-4111-bbeb-32426fe0a737\",\n                \"name\": \"b83f049e-6b2a-4111-bbeb-32426fe0a737.wav\",\n                \"fileFormat\": \"WAV\",\n                \"size\": 123392,\n                \"startTime\": \"2025-04-04T09:25:50.059+0000\",\n                \"endTime\": \"2025-04-04T09:25:57.739+0000\",\n                \"creationTime\": \"2025-04-04T09:25:57.829+0000\",\n                \"duration\": 7,\n                \"location\": \"HOSTED\",\n                \"customData\": {\n                  \"routeId\": \"edef623d-0e1a-4a83-91e5-73c75ed31473\"\n                }\n              }\n            ]\n          },\n          {\n            \"callId\": \"cb64100e-371c-4928-8cbd-1256752e4de4\",\n            \"endpoint\": {\n              \"phoneNumber\": \"38762222333\",\n              \"type\": \"PHONE\"\n            },\n            \"direction\": \"OUTBOUND\",\n            \"status\": \"SUCCESSFUL\",\n            \"files\": [\n              {\n                \"id\": \"d411529b-cc99-4144-8e4d-53214a1f1660\",\n                \"name\": \"d411529b-cc99-4144-8e4d-53214a1f1660.wav\",\n                \"fileFormat\": \"WAV\",\n                \"size\": 123682,\n                \"startTime\": \"2025-04-04T09:25:50.079+0000\",\n                \"endTime\": \"2025-04-04T09:25:57.779+0000\",\n                \"creationTime\": \"2025-04-04T09:25:57.825+0000\",\n                \"duration\": 7,\n                \"location\": \"HOSTED\",\n                \"customData\": {\n                  \"routeId\": \"edef623d-0e1a-4a83-91e5-73c75ed31473\"\n                }\n              }\n            ]\n          }\n        ]\n      }\n    },\n    {\n      \"application\": {\n        \"routeId\": \"3a1fcde8-df41-4209-b9a5-895db5d42e3d\",\n        \"routeName\": \"Route with enabled recording composition\",\n        \"correlationId\": \"fc840e38-29dc-47d5-9947-17371c939a17\",\n        \"startTime\": \"2025-04-04T11:38:01.723+0000\",\n        \"endTime\": \"2025-04-04T11:38:12.763+0000\",\n        \"type\": \"CALL_ROUTING\"\n      },\n      \"recording\": {\n        \"composedFiles\": [\n          {\n            \"id\": \"294cdf1b-70ae-4249-b384-6f267b5cf345\",\n            \"name\": \"294cdf1b-70ae-4249-b384-6f267b5cf345.wav\",\n            \"fileFormat\": \"WAV\",\n            \"size\": 177152,\n            \"startTime\": \"2025-04-04T11:38:01.724+0000\",\n            \"endTime\": \"2025-04-04T11:38:12.764+0000\",\n            \"creationTime\": \"2025-04-04T11:38:12.829+0000\",\n            \"duration\": 11,\n            \"location\": \"HOSTED\",\n            \"customData\": {\n              \"routeId\": \"3a1fcde8-df41-4209-b9a5-895db5d42e3d\"\n            }\n          }\n        ],\n        \"callRecordings\": [\n          {\n            \"callId\": \"m1to60o6ihb23q06epc23n46ihd0nilcibb8nihd5jpu6n5d3boqip1e1bqs6lfdgk00\",\n            \"endpoint\": {\n              \"phoneNumber\": \"38761111222\",\n              \"type\": \"PHONE\"\n            },\n            \"direction\": \"INBOUND\",\n            \"files\": []\n          },\n          {\n            \"callId\": \"81a815ee-4fc2-45e3-a3eb-50277359a089\",\n            \"endpoint\": {\n              \"phoneNumber\": \"38761111333\",\n              \"type\": \"PHONE\"\n            },\n            \"direction\": \"OUTBOUND\",\n            \"files\": []\n          }\n        ]\n      }\n    }\n  ],\n  \"paging\": {\n    \"page\": 0,\n    \"size\": 20,\n    \"totalPages\": 1,\n    \"totalResults\": 2\n  }\n}"},{"id":"bae8c02c-a637-4ace-adec-bc898b77fdcd","name":"400 - Error responses","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/callrouting/1/recordings","protocol":"https","host":["go2","vhdmedia","se"],"path":["callrouting","1","recordings"],"query":[{"key":"sortBy","value":"","description":"Field that will be used for sorting.","disabled":true},{"key":"sortDirection","value":"","description":"Order in which files will be sorted based on sortBy field.","disabled":true},{"key":"endpointType","value":"","description":"Endpoint type of at least one participant in the recorded call.","disabled":true},{"key":"phoneNumber","value":"","description":"Phone number that was participant of the recorded call.","disabled":true},{"key":"sipTrunkId","value":"","description":"SIP Trunk ID that was participant of the recorded call.","disabled":true},{"key":"sipUsername","value":"","description":"Username on the SIP trunk that was participant of the recorded call.","disabled":true},{"key":"webrtcIdentity","value":"","description":"WebRTC Identity that was participant of the recorded call.","disabled":true},{"key":"routeId","value":"","description":"Route ID that was used to establish the recorded call.","disabled":true},{"key":"routeName","value":"","description":"Route name to be used to match recordings. Name will be matched comparing it to all route names.","disabled":true},{"key":"correlationId","value":"","description":"Correlation ID to match.","disabled":true},{"key":"startTimeAfter","value":"","description":"Date and time when the (first) call recording started.","disabled":true},{"key":"startTimeBefore","value":"","description":"Date and time when the (last) call recording started.","disabled":true},{"key":"location","value":"","description":"Recording location.","disabled":true},{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"BAD_REQUEST\",\n      \"text\": \"Invalid sort column.\"\n    }\n  }\n}"},{"id":"bbb5dd4a-8e4f-44e6-9a0d-a3d6fe80fa22","name":"401 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/callrouting/1/recordings","protocol":"https","host":["go2","vhdmedia","se"],"path":["callrouting","1","recordings"],"query":[{"key":"sortBy","value":"","description":"Field that will be used for sorting.","disabled":true},{"key":"sortDirection","value":"","description":"Order in which files will be sorted based on sortBy field.","disabled":true},{"key":"endpointType","value":"","description":"Endpoint type of at least one participant in the recorded call.","disabled":true},{"key":"phoneNumber","value":"","description":"Phone number that was participant of the recorded call.","disabled":true},{"key":"sipTrunkId","value":"","description":"SIP Trunk ID that was participant of the recorded call.","disabled":true},{"key":"sipUsername","value":"","description":"Username on the SIP trunk that was participant of the recorded call.","disabled":true},{"key":"webrtcIdentity","value":"","description":"WebRTC Identity that was participant of the recorded call.","disabled":true},{"key":"routeId","value":"","description":"Route ID that was used to establish the recorded call.","disabled":true},{"key":"routeName","value":"","description":"Route name to be used to match recordings. Name will be matched comparing it to all route names.","disabled":true},{"key":"correlationId","value":"","description":"Correlation ID to match.","disabled":true},{"key":"startTimeAfter","value":"","description":"Date and time when the (first) call recording started.","disabled":true},{"key":"startTimeBefore","value":"","description":"Date and time when the (last) call recording started.","disabled":true},{"key":"location","value":"","description":"Recording location.","disabled":true},{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"31de9cea-79ff-4405-90ca-79007130893f","name":"403 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/callrouting/1/recordings","protocol":"https","host":["go2","vhdmedia","se"],"path":["callrouting","1","recordings"],"query":[{"key":"sortBy","value":"","description":"Field that will be used for sorting.","disabled":true},{"key":"sortDirection","value":"","description":"Order in which files will be sorted based on sortBy field.","disabled":true},{"key":"endpointType","value":"","description":"Endpoint type of at least one participant in the recorded call.","disabled":true},{"key":"phoneNumber","value":"","description":"Phone number that was participant of the recorded call.","disabled":true},{"key":"sipTrunkId","value":"","description":"SIP Trunk ID that was participant of the recorded call.","disabled":true},{"key":"sipUsername","value":"","description":"Username on the SIP trunk that was participant of the recorded call.","disabled":true},{"key":"webrtcIdentity","value":"","description":"WebRTC Identity that was participant of the recorded call.","disabled":true},{"key":"routeId","value":"","description":"Route ID that was used to establish the recorded call.","disabled":true},{"key":"routeName","value":"","description":"Route name to be used to match recordings. Name will be matched comparing it to all route names.","disabled":true},{"key":"correlationId","value":"","description":"Correlation ID to match.","disabled":true},{"key":"startTimeAfter","value":"","description":"Date and time when the (first) call recording started.","disabled":true},{"key":"startTimeBefore","value":"","description":"Date and time when the (last) call recording started.","disabled":true},{"key":"location","value":"","description":"Recording location.","disabled":true},{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"e989a5de-6713-45bd-8e19-8e1b6dfac9d4","name":"429 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/callrouting/1/recordings","protocol":"https","host":["go2","vhdmedia","se"],"path":["callrouting","1","recordings"],"query":[{"key":"sortBy","value":"","description":"Field that will be used for sorting.","disabled":true},{"key":"sortDirection","value":"","description":"Order in which files will be sorted based on sortBy field.","disabled":true},{"key":"endpointType","value":"","description":"Endpoint type of at least one participant in the recorded call.","disabled":true},{"key":"phoneNumber","value":"","description":"Phone number that was participant of the recorded call.","disabled":true},{"key":"sipTrunkId","value":"","description":"SIP Trunk ID that was participant of the recorded call.","disabled":true},{"key":"sipUsername","value":"","description":"Username on the SIP trunk that was participant of the recorded call.","disabled":true},{"key":"webrtcIdentity","value":"","description":"WebRTC Identity that was participant of the recorded call.","disabled":true},{"key":"routeId","value":"","description":"Route ID that was used to establish the recorded call.","disabled":true},{"key":"routeName","value":"","description":"Route name to be used to match recordings. Name will be matched comparing it to all route names.","disabled":true},{"key":"correlationId","value":"","description":"Correlation ID to match.","disabled":true},{"key":"startTimeAfter","value":"","description":"Date and time when the (first) call recording started.","disabled":true},{"key":"startTimeBefore","value":"","description":"Date and time when the (last) call recording started.","disabled":true},{"key":"location","value":"","description":"Recording location.","disabled":true},{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"750f4a1e-0630-4a50-903c-1042cb1ba3a5","name":"500 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/callrouting/1/recordings","protocol":"https","host":["go2","vhdmedia","se"],"path":["callrouting","1","recordings"],"query":[{"key":"sortBy","value":"","description":"Field that will be used for sorting.","disabled":true},{"key":"sortDirection","value":"","description":"Order in which files will be sorted based on sortBy field.","disabled":true},{"key":"endpointType","value":"","description":"Endpoint type of at least one participant in the recorded call.","disabled":true},{"key":"phoneNumber","value":"","description":"Phone number that was participant of the recorded call.","disabled":true},{"key":"sipTrunkId","value":"","description":"SIP Trunk ID that was participant of the recorded call.","disabled":true},{"key":"sipUsername","value":"","description":"Username on the SIP trunk that was participant of the recorded call.","disabled":true},{"key":"webrtcIdentity","value":"","description":"WebRTC Identity that was participant of the recorded call.","disabled":true},{"key":"routeId","value":"","description":"Route ID that was used to establish the recorded call.","disabled":true},{"key":"routeName","value":"","description":"Route name to be used to match recordings. Name will be matched comparing it to all route names.","disabled":true},{"key":"correlationId","value":"","description":"Correlation ID to match.","disabled":true},{"key":"startTimeAfter","value":"","description":"Date and time when the (first) call recording started.","disabled":true},{"key":"startTimeBefore","value":"","description":"Date and time when the (last) call recording started.","disabled":true},{"key":"location","value":"","description":"Recording location.","disabled":true},{"key":"page","value":"","description":"Results page to retrieve (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"Number of records per page. Default: `20`.","disabled":true}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"cba4bc7f-deed-4982-b2ec-a88255ae2110"}],"id":"b7dfd1f8-aa1d-4796-87f0-502d9d2d3afd","description":"<p>Recordings of routed calls.</p>\n","_postman_id":"b7dfd1f8-aa1d-4796-87f0-502d9d2d3afd"},{"name":"NUMBERS","item":[{"name":"List owned numbers","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"numbers\", \"numberCount\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","","pm.test(\"'numbers' is an array\", function () {","    pm.expect(responseBody[\"numbers\"]).to.be.an('array');","});","","var j = pm.response.json();","if (j.numbers && j.numbers.length) { pm.environment.set(\"numberKey\", j.numbers[0].numberKey); }"],"type":"text/javascript","packages":{}}}],"id":"1e5d54bb-850c-496a-8a58-3b4a4ddd32da","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/numbers/1/numbers","description":"<p>List owned numbers.</p>\n<p>Use this method to get all the owned numbers for this account.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>limit</em></td>\n<td>Int</td>\n<td>Number of records returned per page. Default: <code>50</code>.</td>\n</tr>\n<tr>\n<td><em>number</em></td>\n<td>String</td>\n<td>Searched number.</td>\n</tr>\n<tr>\n<td><em>page</em></td>\n<td>Int</td>\n<td>Page number. Use with <code>limit</code> for paging purposes. Default: <code>0</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>numbers</em></td>\n<td>Array</td>\n<td></td>\n</tr>\n<tr>\n<td><em>numbers[].numberKey</em></td>\n<td>String</td>\n<td>Unique ID of a number.</td>\n</tr>\n<tr>\n<td><em>numbers[].number</em></td>\n<td>String</td>\n<td>The number.</td>\n</tr>\n<tr>\n<td><em>numbers[].country</em></td>\n<td>String</td>\n<td>Number's country code.</td>\n</tr>\n<tr>\n<td><em>numbers[].countryName</em></td>\n<td>String</td>\n<td>Number's country.</td>\n</tr>\n<tr>\n<td><em>numbers[].type</em></td>\n<td>String</td>\n<td>The type of number. One of: <code>VIRTUAL_LONG_NUMBER</code>, <code>SHORT_CODE</code>, <code>SIM_HOSTING</code>, <code>VIRTUAL_SIM_HOSTING</code>, <code>VIRTUAL_LONG_NUMBER_CALL_TRIGGER</code>, <code>SHORT_CODE_USSD</code>, <code>WHATSAPP</code>, <code>VIBER</code>, <code>VIBER_VOICE</code>, <code>FACEBOOK</code>, <code>RCS</code>, <code>TELEGRAM</code>, <code>KAKAO_SANGDAM</code>, <code>ZALO_ZMS</code>, <code>OPEN_CHANNEL</code>, <code>ZALO_FOLLOWER</code>.</td>\n</tr>\n<tr>\n<td><em>numbers[].capabilities</em></td>\n<td>Array</td>\n<td>An array of communication channels the number can support.</td>\n</tr>\n<tr>\n<td><em>numbers[].shared</em></td>\n<td>Boolean</td>\n<td>Indicates whether a number is shared.</td>\n</tr>\n<tr>\n<td><em>numbers[].price</em></td>\n<td>Object</td>\n<td>The price object indicating pricing details for the number.</td>\n</tr>\n<tr>\n<td><em>numbers[].price.pricePerMonth</em></td>\n<td>Number</td>\n<td>Price of the monthly fee.</td>\n</tr>\n<tr>\n<td><em>numbers[].price.setupPrice</em></td>\n<td>Number</td>\n<td>Price of the setup fee.</td>\n</tr>\n<tr>\n<td><em>numbers[].price.initialMonthPrice</em></td>\n<td>Number</td>\n<td>Price for the initial month.</td>\n</tr>\n<tr>\n<td><em>numbers[].price.currency</em></td>\n<td>String</td>\n<td>Currency of the number's fees.</td>\n</tr>\n<tr>\n<td><em>numbers[].network</em></td>\n<td>String</td>\n<td>Indicates the network that owns the number.</td>\n</tr>\n<tr>\n<td><em>numbers[].keywords</em></td>\n<td>Array</td>\n<td>Keywords defined for the number.</td>\n</tr>\n<tr>\n<td><em>numbers[].voiceSetup</em></td>\n<td>Object</td>\n<td>Voice setup configuration.</td>\n</tr>\n<tr>\n<td><em>numbers[].voiceSetup.applicationId</em></td>\n<td>String</td>\n<td>ID of the Application that would be associated with the voice setup.</td>\n</tr>\n<tr>\n<td><em>numbers[].voiceSetup.entityId</em></td>\n<td>String</td>\n<td>ID of the Entity that would be associated with the voice setup.</td>\n</tr>\n<tr>\n<td><em>numbers[].voiceSetup.action</em></td>\n<td>Object</td>\n<td><strong>Required.</strong> Voice action configuration.</td>\n</tr>\n<tr>\n<td><em>numbers[].voiceSetup.action.type</em></td>\n<td>String</td>\n<td>Defines action type. It is not possible to create new action type. One of: <code>PULL</code>, <code>HTTP_FORWARD</code>, <code>SMPP_FORWARD</code>, <code>MAIL_FORWARD</code>, <code>NO_ACTION</code>, <code>BLOCK</code>, <code>AUTORESPONSE</code>, <code>USSD</code>, <code>SEND_BULK_MT</code>, <code>EMAIL_TO_SMS_FORWARD</code>, <code>CNS_FWD</code>, <code>USE_CONVERSATIONS</code>, <code>FORWARD_TO_PSTN</code>, <code>FORWARD_TO_IP</code>, <code>FORWARD_TO_IVR</code>, <code>VOICE_NUMBER_MASKING</code>, <code>VOICE_CALL_DROP</code>, <code>FORWARD_TO_WEBRTC</code>, <code>VOICE_FORWARD_TO_CONVERSATIONS</code>, <code>VOICE_FORWARD_TO_CONVERSATIONS_WITH_FLOW</code>, <code>CALL_FORWARD_TO_APPLICATION</code>, <code>FORWARD_TO_SUBSCRIPTION</code>, <code>FORWARD_TO_CALL_ROUTING</code>, <code>USE_ANSWERS</code>, <code>VOICE_FORWARD_TO_ANSWERS</code>, <code>VOICE_FORWARD_TO_FLOW</code>, <code>VOICE_FORWARD_TO_FLOW_WITH_CONVERSATIONS</code>, <code>FORWARD_TO_OPERATOR_CONNECT</code>, <code>FORWARD_TO_EXTERNAL_INTEGRATION</code>, <code>FORWARD_TO_AI_AGENT</code>, <code>FORWARD_TO_MARKUP_LANGUAGE</code>, <code>OTHER</code>.</td>\n</tr>\n<tr>\n<td><em>numbers[].voiceSetup.action.description</em></td>\n<td>String</td>\n<td>Additional action description.</td>\n</tr>\n<tr>\n<td><em>numbers[].voiceSetup.channel</em></td>\n<td>String</td>\n<td>Channel the voice action is configured on. One of: <code>VOICE</code>, <code>WHATSAPP</code>.</td>\n</tr>\n<tr>\n<td><em>numbers[].reservationStatus</em></td>\n<td>String</td>\n<td>Status of the number reservation. One of: <code>PENDING</code>, <code>BILLING_FAILED</code>, <code>ERROR</code>, <code>RESERVATION_FAILED</code>.</td>\n</tr>\n<tr>\n<td><em>numbers[].additionalSetupRequired</em></td>\n<td>Boolean</td>\n<td>Indicates whether the number requires additional setup before being used.</td>\n</tr>\n<tr>\n<td><em>numbers[].editPermissions</em></td>\n<td>Object</td>\n<td>The editPermissions object to indicate editing permissions for the number.</td>\n</tr>\n<tr>\n<td><em>numbers[].editPermissions.canEditNumber</em></td>\n<td>Boolean</td>\n<td>Indicates whether the permissions allow for editing a number.</td>\n</tr>\n<tr>\n<td><em>numbers[].editPermissions.canEditConfiguration</em></td>\n<td>Boolean</td>\n<td>Indicates whether the the permissions allow for editing number configuration.</td>\n</tr>\n<tr>\n<td><em>numbers[].note</em></td>\n<td>String</td>\n<td>Additional information attached to the number. Available only for SHORT_CODE and VIRTUAL_LONG_NUMBER number types.</td>\n</tr>\n<tr>\n<td><em>numbers[].applicationId</em></td>\n<td>String</td>\n<td>ID of the Application that would be associated with the number.</td>\n</tr>\n<tr>\n<td><em>numbers[].entityId</em></td>\n<td>String</td>\n<td>ID of the Entity that would be associated with the number.</td>\n</tr>\n<tr>\n<td><em>numberCount</em></td>\n<td>Int</td>\n<td></td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["numbers","1","numbers"],"host":["go2","vhdmedia","se"],"query":[{"disabled":true,"description":{"content":"<p>Number of records returned per page. Default: <code>50</code>.</p>\n","type":"text/plain"},"key":"limit","value":""},{"disabled":true,"description":{"content":"<p>Searched number.</p>\n","type":"text/plain"},"key":"number","value":""},{"disabled":true,"description":{"content":"<p>Page number. Use with <code>limit</code> for paging purposes. Default: <code>0</code>.</p>\n","type":"text/plain"},"key":"page","value":""}],"variable":[]}},"response":[{"id":"d2a738aa-5649-4273-95fb-6899ea8dcb12","name":"200 - Response example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/numbers/1/numbers","protocol":"https","host":["go2","vhdmedia","se"],"path":["numbers","1","numbers"],"query":[{"key":"limit","value":"","description":"Number of records returned per page. Default: `50`.","disabled":true},{"key":"number","value":"","description":"Searched number.","disabled":true},{"key":"page","value":"","description":"Page number. Use with `limit` for paging purposes. Default: `0`.","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"numbers\": [\n    {\n      \"numberKey\": \"6FED0BC540BFADD9B05ED7D89AAC22FA\",\n      \"number\": \"447860041117\",\n      \"country\": \"GB\",\n      \"countryName\": \"United Kingdom\",\n      \"type\": \"VIRTUAL_LONG_NUMBER\",\n      \"capabilities\": [\n        \"SMS\"\n      ],\n      \"shared\": false,\n      \"price\": {\n        \"pricePerMonth\": 5,\n        \"setupPrice\": 0,\n        \"currency\": \"EUR\"\n      },\n      \"network\": \"02 (Telefonica UK Ltd)\",\n      \"keywords\": [\n        \"test\",\n        \"stop\"\n      ],\n      \"additionalSetupRequired\": false,\n      \"editPermissions\": {\n        \"canEditNumber\": true,\n        \"canEditConfiguration\": true\n      },\n      \"applicationId\": \"default\"\n    }\n  ],\n  \"numberCount\": 1\n}"},{"id":"8d781664-f052-4abf-9d34-faafe15d36bf","name":"401 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/numbers/1/numbers","protocol":"https","host":["go2","vhdmedia","se"],"path":["numbers","1","numbers"],"query":[{"key":"limit","value":"","description":"Number of records returned per page. Default: `50`.","disabled":true},{"key":"number","value":"","description":"Searched number.","disabled":true},{"key":"page","value":"","description":"Page number. Use with `limit` for paging purposes. Default: `0`.","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"a29923d0-6646-43ef-91f7-7d2fceb2d083","name":"403 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/numbers/1/numbers","protocol":"https","host":["go2","vhdmedia","se"],"path":["numbers","1","numbers"],"query":[{"key":"limit","value":"","description":"Number of records returned per page. Default: `50`.","disabled":true},{"key":"number","value":"","description":"Searched number.","disabled":true},{"key":"page","value":"","description":"Page number. Use with `limit` for paging purposes. Default: `0`.","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"11e3dcaa-e312-4ff4-ad5f-33458894188e","name":"429 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/numbers/1/numbers","protocol":"https","host":["go2","vhdmedia","se"],"path":["numbers","1","numbers"],"query":[{"key":"limit","value":"","description":"Number of records returned per page. Default: `50`.","disabled":true},{"key":"number","value":"","description":"Searched number.","disabled":true},{"key":"page","value":"","description":"Page number. Use with `limit` for paging purposes. Default: `0`.","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"c4e98361-329b-42e5-8af0-049e9a20107c","name":"500 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/numbers/1/numbers","protocol":"https","host":["go2","vhdmedia","se"],"path":["numbers","1","numbers"],"query":[{"key":"limit","value":"","description":"Number of records returned per page. Default: `50`.","disabled":true},{"key":"number","value":"","description":"Searched number.","disabled":true},{"key":"page","value":"","description":"Page number. Use with `limit` for paging purposes. Default: `0`.","disabled":true}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"1e5d54bb-850c-496a-8a58-3b4a4ddd32da"},{"name":"Get single owned number","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","if (!(pm.environment.get(\"numberKey\") || \"\")) { skip(\"numberKey is not set (an earlier request did not create it)\"); }"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"numberKey\", \"number\", \"country\", \"type\", \"capabilities\", \"shared\", \"price\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","","pm.test(\"'capabilities' is an array\", function () {","    pm.expect(responseBody[\"capabilities\"]).to.be.an('array');","});"],"type":"text/javascript","packages":{}}}],"id":"cba7d2b3-7cfa-47b5-9fe3-959519d21d10","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/numbers/1/numbers/{{numberKey}}","description":"<p>Get single owned number.</p>\n<p>Get information about an owned number using the unique ID of the number.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>numberKey</em></td>\n<td>String</td>\n<td><strong>Required.</strong> The unique ID of the number for which information is requested.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>numberKey</em></td>\n<td>String</td>\n<td>Unique ID of a number.</td>\n</tr>\n<tr>\n<td><em>number</em></td>\n<td>String</td>\n<td>The number.</td>\n</tr>\n<tr>\n<td><em>country</em></td>\n<td>String</td>\n<td>Number's country code.</td>\n</tr>\n<tr>\n<td><em>countryName</em></td>\n<td>String</td>\n<td>Number's country.</td>\n</tr>\n<tr>\n<td><em>type</em></td>\n<td>String</td>\n<td>The type of number. One of: <code>VIRTUAL_LONG_NUMBER</code>, <code>SHORT_CODE</code>, <code>SIM_HOSTING</code>, <code>VIRTUAL_SIM_HOSTING</code>, <code>VIRTUAL_LONG_NUMBER_CALL_TRIGGER</code>, <code>SHORT_CODE_USSD</code>, <code>WHATSAPP</code>, <code>VIBER</code>, <code>VIBER_VOICE</code>, <code>FACEBOOK</code>, <code>RCS</code>, <code>TELEGRAM</code>, <code>KAKAO_SANGDAM</code>, <code>ZALO_ZMS</code>, <code>OPEN_CHANNEL</code>, <code>ZALO_FOLLOWER</code>.</td>\n</tr>\n<tr>\n<td><em>capabilities</em></td>\n<td>Array</td>\n<td>An array of communication channels the number can support.</td>\n</tr>\n<tr>\n<td><em>shared</em></td>\n<td>Boolean</td>\n<td>Indicates whether a number is shared.</td>\n</tr>\n<tr>\n<td><em>price</em></td>\n<td>Object</td>\n<td>The price object indicating pricing details for the number.</td>\n</tr>\n<tr>\n<td><em>price.pricePerMonth</em></td>\n<td>Number</td>\n<td>Price of the monthly fee.</td>\n</tr>\n<tr>\n<td><em>price.setupPrice</em></td>\n<td>Number</td>\n<td>Price of the setup fee.</td>\n</tr>\n<tr>\n<td><em>price.initialMonthPrice</em></td>\n<td>Number</td>\n<td>Price for the initial month.</td>\n</tr>\n<tr>\n<td><em>price.currency</em></td>\n<td>String</td>\n<td>Currency of the number's fees.</td>\n</tr>\n<tr>\n<td><em>network</em></td>\n<td>String</td>\n<td>Indicates the network that owns the number.</td>\n</tr>\n<tr>\n<td><em>keywords</em></td>\n<td>Array</td>\n<td>Keywords defined for the number.</td>\n</tr>\n<tr>\n<td><em>voiceSetup</em></td>\n<td>Object</td>\n<td>Voice setup configuration.</td>\n</tr>\n<tr>\n<td><em>voiceSetup.applicationId</em></td>\n<td>String</td>\n<td>ID of the Application that would be associated with the voice setup.</td>\n</tr>\n<tr>\n<td><em>voiceSetup.entityId</em></td>\n<td>String</td>\n<td>ID of the Entity that would be associated with the voice setup.</td>\n</tr>\n<tr>\n<td><em>voiceSetup.action</em></td>\n<td>Object</td>\n<td><strong>Required.</strong> Voice action configuration.</td>\n</tr>\n<tr>\n<td><em>voiceSetup.action.type</em></td>\n<td>String</td>\n<td>Defines action type. It is not possible to create new action type. One of: <code>PULL</code>, <code>HTTP_FORWARD</code>, <code>SMPP_FORWARD</code>, <code>MAIL_FORWARD</code>, <code>NO_ACTION</code>, <code>BLOCK</code>, <code>AUTORESPONSE</code>, <code>USSD</code>, <code>SEND_BULK_MT</code>, <code>EMAIL_TO_SMS_FORWARD</code>, <code>CNS_FWD</code>, <code>USE_CONVERSATIONS</code>, <code>FORWARD_TO_PSTN</code>, <code>FORWARD_TO_IP</code>, <code>FORWARD_TO_IVR</code>, <code>VOICE_NUMBER_MASKING</code>, <code>VOICE_CALL_DROP</code>, <code>FORWARD_TO_WEBRTC</code>, <code>VOICE_FORWARD_TO_CONVERSATIONS</code>, <code>VOICE_FORWARD_TO_CONVERSATIONS_WITH_FLOW</code>, <code>CALL_FORWARD_TO_APPLICATION</code>, <code>FORWARD_TO_SUBSCRIPTION</code>, <code>FORWARD_TO_CALL_ROUTING</code>, <code>USE_ANSWERS</code>, <code>VOICE_FORWARD_TO_ANSWERS</code>, <code>VOICE_FORWARD_TO_FLOW</code>, <code>VOICE_FORWARD_TO_FLOW_WITH_CONVERSATIONS</code>, <code>FORWARD_TO_OPERATOR_CONNECT</code>, <code>FORWARD_TO_EXTERNAL_INTEGRATION</code>, <code>FORWARD_TO_AI_AGENT</code>, <code>FORWARD_TO_MARKUP_LANGUAGE</code>, <code>OTHER</code>.</td>\n</tr>\n<tr>\n<td><em>voiceSetup.action.description</em></td>\n<td>String</td>\n<td>Additional action description.</td>\n</tr>\n<tr>\n<td><em>voiceSetup.channel</em></td>\n<td>String</td>\n<td>Channel the voice action is configured on. One of: <code>VOICE</code>, <code>WHATSAPP</code>.</td>\n</tr>\n<tr>\n<td><em>reservationStatus</em></td>\n<td>String</td>\n<td>Status of the number reservation. One of: <code>PENDING</code>, <code>BILLING_FAILED</code>, <code>ERROR</code>, <code>RESERVATION_FAILED</code>.</td>\n</tr>\n<tr>\n<td><em>additionalSetupRequired</em></td>\n<td>Boolean</td>\n<td>Indicates whether the number requires additional setup before being used.</td>\n</tr>\n<tr>\n<td><em>editPermissions</em></td>\n<td>Object</td>\n<td>The editPermissions object to indicate editing permissions for the number.</td>\n</tr>\n<tr>\n<td><em>editPermissions.canEditNumber</em></td>\n<td>Boolean</td>\n<td>Indicates whether the permissions allow for editing a number.</td>\n</tr>\n<tr>\n<td><em>editPermissions.canEditConfiguration</em></td>\n<td>Boolean</td>\n<td>Indicates whether the the permissions allow for editing number configuration.</td>\n</tr>\n<tr>\n<td><em>note</em></td>\n<td>String</td>\n<td>Additional information attached to the number. Available only for SHORT_CODE and VIRTUAL_LONG_NUMBER number types.</td>\n</tr>\n<tr>\n<td><em>applicationId</em></td>\n<td>String</td>\n<td>ID of the Application that would be associated with the number.</td>\n</tr>\n<tr>\n<td><em>entityId</em></td>\n<td>String</td>\n<td>ID of the Entity that would be associated with the number.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["numbers","1","numbers","{{numberKey}}"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"c17f6e7b-62dd-49d7-9e16-3e207861bfa0","name":"200 - Response example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/numbers/1/numbers/{{numberKey}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"numberKey\": \"6FED0BC540BFADD9B05ED7D89AAC22FA\",\n  \"number\": \"447860041117\",\n  \"country\": \"GB\",\n  \"type\": \"VIRTUAL_LONG_NUMBER\",\n  \"capabilities\": [\n    \"SMS\"\n  ],\n  \"shared\": false,\n  \"price\": {\n    \"pricePerMonth\": 5,\n    \"setupPrice\": 0,\n    \"currency\": \"EUR\"\n  }\n}"},{"id":"90f76377-8ddb-4b9d-954a-dbff491d1c57","name":"401 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/numbers/1/numbers/{{numberKey}}"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"f7b09804-d474-48bb-8832-3c727dab2a14","name":"403 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/numbers/1/numbers/{{numberKey}}"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"b37ed282-11eb-43fd-911c-e90fe6dd6b30","name":"429 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/numbers/1/numbers/{{numberKey}}"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"fb272c07-b1f3-4ca5-8f3c-104a58ac3e41","name":"500 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/numbers/1/numbers/{{numberKey}}"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"cba7d2b3-7cfa-47b5-9fe3-959519d21d10"},{"name":"Get voice setup on number","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","if (!(pm.environment.get(\"numberKey\") || \"\")) { skip(\"numberKey is not set (an earlier request did not create it)\"); }"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["pm.test(\"Status code is 200 or 404\", function () { pm.expect(pm.response.code).to.be.oneOf([200, 404]); });","pm.test(\"Response time is below 5000ms\", function () { pm.expect(pm.response.responseTime).to.be.below(5000); });","pm.test(\"The voice setup is returned, or 404 when the number has none\", function () { if (pm.response.code === 200) { pm.expect(pm.response.json()).to.be.an(\"object\"); } });"],"type":"text/javascript","packages":{}}}],"id":"0b74b470-f021-4fb1-bb83-b27bd8244901","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/numbers/2/numbers/{{numberKey}}/voice","description":"<p>Get voice setup on number.</p>\n<p>This method fetches the voice setup on a number. Use the <code>channel</code> parameter to fetch the setup for a specific channel.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>numberKey</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Unique ID of a number.</td>\n</tr>\n<tr>\n<td><em>channel</em></td>\n<td>String</td>\n<td>Channel the voice setup belongs to. Default: <code>VOICE</code>. One of: <code>VOICE</code>, <code>WHATSAPP</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>applicationId</em></td>\n<td>String</td>\n<td>ID of the Application that would be associated with the voice setup.</td>\n</tr>\n<tr>\n<td><em>entityId</em></td>\n<td>String</td>\n<td>ID of the Entity that would be associated with the voice setup.</td>\n</tr>\n<tr>\n<td><em>action</em></td>\n<td>Object</td>\n<td><strong>Required.</strong> Voice action configuration.</td>\n</tr>\n<tr>\n<td><em>action.type</em></td>\n<td>String</td>\n<td>Defines action type. It is not possible to create new action type. One of: <code>PULL</code>, <code>HTTP_FORWARD</code>, <code>SMPP_FORWARD</code>, <code>MAIL_FORWARD</code>, <code>NO_ACTION</code>, <code>BLOCK</code>, <code>AUTORESPONSE</code>, <code>USSD</code>, <code>SEND_BULK_MT</code>, <code>EMAIL_TO_SMS_FORWARD</code>, <code>CNS_FWD</code>, <code>USE_CONVERSATIONS</code>, <code>FORWARD_TO_PSTN</code>, <code>FORWARD_TO_IP</code>, <code>FORWARD_TO_IVR</code>, <code>VOICE_NUMBER_MASKING</code>, <code>VOICE_CALL_DROP</code>, <code>FORWARD_TO_WEBRTC</code>, <code>VOICE_FORWARD_TO_CONVERSATIONS</code>, <code>VOICE_FORWARD_TO_CONVERSATIONS_WITH_FLOW</code>, <code>CALL_FORWARD_TO_APPLICATION</code>, <code>FORWARD_TO_SUBSCRIPTION</code>, <code>FORWARD_TO_CALL_ROUTING</code>, <code>USE_ANSWERS</code>, <code>VOICE_FORWARD_TO_ANSWERS</code>, <code>VOICE_FORWARD_TO_FLOW</code>, <code>VOICE_FORWARD_TO_FLOW_WITH_CONVERSATIONS</code>, <code>FORWARD_TO_OPERATOR_CONNECT</code>, <code>FORWARD_TO_EXTERNAL_INTEGRATION</code>, <code>FORWARD_TO_AI_AGENT</code>, <code>FORWARD_TO_MARKUP_LANGUAGE</code>, <code>OTHER</code>.</td>\n</tr>\n<tr>\n<td><em>action.description</em></td>\n<td>String</td>\n<td>Additional action description.</td>\n</tr>\n<tr>\n<td><em>channel</em></td>\n<td>String</td>\n<td>Channel the voice action is configured on. One of: <code>VOICE</code>, <code>WHATSAPP</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["numbers","2","numbers","{{numberKey}}","voice"],"host":["go2","vhdmedia","se"],"query":[{"disabled":true,"description":{"content":"<p>Channel the voice setup belongs to. Default: <code>VOICE</code>.</p>\n","type":"text/plain"},"key":"channel","value":""}],"variable":[]}},"response":[{"id":"d8f3eb1e-a13a-41a0-b46f-ad41ee8230fe","name":"200 - VOICE_NUMBER_MASKING","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/numbers/2/numbers/{{numberKey}}/voice","protocol":"https","host":["go2","vhdmedia","se"],"path":["numbers","2","numbers","{{numberKey}}","voice"],"query":[{"key":"channel","value":"","description":"Channel the voice setup belongs to. Default: `VOICE`.","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"channel\": \"VOICE\",\n  \"action\": {\n    \"voiceNumberMaskingConfigKey\": \"C6A5995CBF4D2DF2ADE29963B3BB00E6\",\n    \"type\": \"VOICE_NUMBER_MASKING\"\n  }\n}"},{"id":"0c37d7a7-fd55-4bf3-897b-e32331bf0c77","name":"401 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/numbers/2/numbers/{{numberKey}}/voice","protocol":"https","host":["go2","vhdmedia","se"],"path":["numbers","2","numbers","{{numberKey}}","voice"],"query":[{"key":"channel","value":"","description":"Channel the voice setup belongs to. Default: `VOICE`.","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"3cfc40eb-cc96-4b6a-86cd-daf94db0add4","name":"403 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/numbers/2/numbers/{{numberKey}}/voice","protocol":"https","host":["go2","vhdmedia","se"],"path":["numbers","2","numbers","{{numberKey}}","voice"],"query":[{"key":"channel","value":"","description":"Channel the voice setup belongs to. Default: `VOICE`.","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"a0d1ccb9-08d6-4adb-9af2-9bcf226e0d7b","name":"500 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/numbers/2/numbers/{{numberKey}}/voice","protocol":"https","host":["go2","vhdmedia","se"],"path":["numbers","2","numbers","{{numberKey}}","voice"],"query":[{"key":"channel","value":"","description":"Channel the voice setup belongs to. Default: `VOICE`.","disabled":true}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"0b74b470-f021-4fb1-bb83-b27bd8244901"}],"id":"f7e54036-2e02-4139-a9a5-996bd4fb67e8","description":"<p>The phone numbers on your account. These requests only read: buying, canceling and changing numbers is not covered here.</p>\n","_postman_id":"f7e54036-2e02-4139-a9a5-996bd4fb67e8"}],"id":"43dfdc9f-4ea0-4318-b903-bd2d13ae46c0","description":"<blockquote>\n<p><strong>Running these requests.</strong> They run in order and need no setup, except: voice calls are placed only when the environment variable <code>runVoiceCalls</code> is <code>true</code> (otherwise those requests are skipped), and <strong>Download Voice IVR Recorded File</strong> needs <code>ivrFileId</code>. The scheduled voice message is canceled at the end, so no call is placed for it.</p>\n</blockquote>\n","_postman_id":"43dfdc9f-4ea0-4318-b903-bd2d13ae46c0"},{"name":"EMAIL","item":[{"name":"SEND EMAIL","item":[{"name":"Send email messages (API v4, latest)","event":[{"listen":"test","script":{"exec":["// Tests for Send email messages (API v4).","pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var res;","pm.test(\"Response body is valid JSON\", function () { res = pm.response.json(); });","","pm.test(\"Response has bulkId\", function () {","    pm.expect(res).to.have.property('bulkId').that.is.a('string');","});","","pm.test(\"Response contains 'messages' array\", function () {","    pm.expect(res).to.have.property('messages').that.is.an('array').with.lengthOf.at.least(1);","});","","pm.test(\"Each message has the documented fields\", function () {","    res.messages.forEach(function (m) {","        pm.expect(m).to.have.property('messageId').that.is.a('string');","        pm.expect(m).to.have.property('status');","        pm.expect(m.status).to.include.all.keys('groupId', 'groupName', 'id', 'name', 'description');","        pm.expect(m.status.groupName).to.be.oneOf(['ACCEPTED', 'PENDING', 'UNDELIVERABLE', 'DELIVERED', 'EXPIRED', 'REJECTED']);","    });","});","","pm.test(\"Number of messages matches the number of recipients\", function () {","    var req = JSON.parse(pm.request.body.raw), n = 0;","    req.messages.forEach(function (m) {","        m.destinations.forEach(function (d) {","            ['to', 'cc', 'bcc'].forEach(function (k) { n += (d[k] || []).length; });","        });","    });","    pm.expect(res.messages.length).to.be.at.least(1);","    pm.expect(res.messages.length).to.be.at.most(Math.max(n, 1));","});",""],"type":"text/javascript","packages":{}}}],"id":"fcc95463-f3f1-4b70-a561-1597e9af2842","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"messages\": [\n    {\n      \"sender\": \"example@vhdmedia.eu\",\n      \"destinations\": [\n        {\n          \"to\": [\n            {\n              \"destination\": \"jane.smith@vhdmedia.se\",\n              \"placeholders\": \"{\\\"name\\\":\\\"Jane\\\"}\"\n            }\n          ]\n        }\n      ],\n      \"content\": {\n        \"subject\": \"Welcome to VHD, {{name}}\",\n        \"html\": \"<h1>Hello {{name}}</h1><p>This is a test email from the VHD API.</p>\",\n        \"text\": \"Dear {{name}}, this is a test email from the VHD API.\"\n      },\n      \"webhooks\": {\n        \"delivery\": {\n          \"url\": \"https://www.example.com/email/delivery\",\n          \"intermediateReport\": true,\n          \"notify\": true\n        },\n        \"contentType\": \"application/json\",\n        \"callbackData\": \"DLR callback data\"\n      }\n    }\n  ],\n  \"options\": {\n    \"tracking\": {\n      \"trackOpens\": true,\n      \"trackClicks\": true\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/email/4/messages","description":"<p>Send one email or many in a single request, with text, HTML, a template, attachments, and placeholders. This is the current version of the email send API and replaces <strong>Send fully featured email (API v3)</strong>, which stays available.</p>\n<p>Messages sent here can use the VHD options for tracking, scheduling, delivery windows, IP pools, and storage. Delivery reports go to the URL in <code>webhooks.delivery.url</code>, and open and click notifications go to <code>options.tracking.trackingUrl</code>.</p>\n<blockquote>\n<p><strong>Scheduling.</strong> With <code>options.schedule.sendAt</code>, an email can be scheduled <strong>up to 5 days</strong> ahead. The older v3 send accepted dates further ahead. Use the scheduled-email requests to view, pause, reschedule or cancel a scheduled bulk.</p>\n</blockquote>\n<blockquote>\n<p><strong>Placeholders are JSON strings.</strong> The values of <code>placeholders</code> and <code>defaultPlaceholders</code> must be sent as a string that contains JSON, for example <code>\"{\\\"name\\\": \\\"Jane\\\"}\"</code>, not as an object.</p>\n</blockquote>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>messages</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> An array of message objects of a single message or multiple messages sent under one bulk ID.</td>\n</tr>\n<tr>\n<td><em>messages[].sender</em></td>\n<td>String</td>\n<td>Email address with optional sender name. Note: This field is required if <code>templateId</code> is not present.</td>\n</tr>\n<tr>\n<td><em>messages[].destinations</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> An array of destination objects for where messages are being sent. A valid destination is required. Note: Maximum number of recipients is 1000 overall including <code>to</code>, <code>cc</code> and <code>bcc</code> field.</td>\n</tr>\n<tr>\n<td><em>messages[].destinations[].to</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> List of TO recipient email addresses.</td>\n</tr>\n<tr>\n<td><em>messages[].destinations[].to[].destination</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Email address of the recipient in a form of <code>john.smith@somecompany.com</code></td>\n</tr>\n<tr>\n<td><em>messages[].destinations[].to[].messageId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the message sent to a recipient.</td>\n</tr>\n<tr>\n<td><em>messages[].destinations[].to[].placeholders</em></td>\n<td>String</td>\n<td>As optional feature, a specific placeholder can be defined whose value will apply only for this destination. Value should be defined as: <code>{\"name\": \"John\"}</code>.</td>\n</tr>\n<tr>\n<td><em>messages[].destinations[].cc</em></td>\n<td>Array</td>\n<td>List of CC recipient email addresses.</td>\n</tr>\n<tr>\n<td><em>messages[].destinations[].cc[].destination</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Email address of the recipient in a form of <code>john.smith@somecompany.com</code></td>\n</tr>\n<tr>\n<td><em>messages[].destinations[].cc[].messageId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the message sent to a recipient.</td>\n</tr>\n<tr>\n<td><em>messages[].destinations[].cc[].placeholders</em></td>\n<td>String</td>\n<td>As optional feature, a specific placeholder can be defined whose value will apply only for this destination. Value should be defined as: <code>{\"name\": \"John\"}</code>.</td>\n</tr>\n<tr>\n<td><em>messages[].destinations[].bcc</em></td>\n<td>Array</td>\n<td>List of BCC recipient email addresses.</td>\n</tr>\n<tr>\n<td><em>messages[].destinations[].bcc[].destination</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Email address of the recipient in a form of <code>john.smith@somecompany.com</code></td>\n</tr>\n<tr>\n<td><em>messages[].destinations[].bcc[].messageId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the message sent to a recipient.</td>\n</tr>\n<tr>\n<td><em>messages[].destinations[].bcc[].placeholders</em></td>\n<td>String</td>\n<td>As optional feature, a specific placeholder can be defined whose value will apply only for this destination. Value should be defined as: <code>{\"name\": \"John\"}</code>.</td>\n</tr>\n<tr>\n<td><em>messages[].destinations[].replyTo</em></td>\n<td>String</td>\n<td>Email address to which recipients of the email can reply.</td>\n</tr>\n<tr>\n<td><em>messages[].destinations[].preserveRecipients</em></td>\n<td>Boolean</td>\n<td>When this option is set to <code>true</code>, all recipients in the <code>to</code> field will be able to see the entire list of recipients who received the email, and the response will include a single <code>messageId</code>. If the option is set to <code>false</code> , each recipient will only see their own email address, and the response will provide a unique <code>messageId</code> for each individual recipient.</td>\n</tr>\n<tr>\n<td><em>messages[].content</em></td>\n<td>Object</td>\n<td><strong>Required.</strong> Message content.</td>\n</tr>\n<tr>\n<td><em>messages[].content.subject</em></td>\n<td>String</td>\n<td>Message subject. Note: This field is required if <code>templateId</code> is not present.</td>\n</tr>\n<tr>\n<td><em>messages[].content.text</em></td>\n<td>String</td>\n<td>Body of the message.</td>\n</tr>\n<tr>\n<td><em>messages[].content.html</em></td>\n<td>String</td>\n<td>The message's body in HTML format. If both <code>html</code> and <code>text</code> fields are included, the <code>text</code> field will be disregarded, and the message will be sent using the <code>html</code> content.</td>\n</tr>\n<tr>\n<td><em>messages[].content.ampHtml</em></td>\n<td>String</td>\n<td>The message's body in AMP HTML format. If you include <code>ampHtml</code>, you must also include <code>html</code>, which will be displayed if AMP is not supported. Keep in mind that not all email clients support AMP HTML. For guidance on configuring the Gmail client, please visit this link: <a href=\"https://developers.google.com/gmail/ampemail/\">https://developers.google.com/gmail/ampemail/</a> .</td>\n</tr>\n<tr>\n<td><em>messages[].content.templateId</em></td>\n<td>String</td>\n<td>The Template ID with predefined email content created through the VHD web interface or API. When <code>templateId</code> is specified, the <code>html</code> and <code>text</code> fields will be disregarded. Note: <code>templateId</code> only supports the <code>Broadcast</code> value; <code>Content</code> and <code>Flow</code> templates are not supported.</td>\n</tr>\n<tr>\n<td><em>messages[].content.attachments</em></td>\n<td>Array</td>\n<td>File attachments.</td>\n</tr>\n<tr>\n<td><em>messages[].content.attachments[].type</em></td>\n<td>String</td>\n<td><strong>Required.</strong></td>\n</tr>\n<tr>\n<td><em>messages[].content.inlineImages</em></td>\n<td>Array</td>\n<td>Allows for inserting an image file inside the HTML code of the email by using <code>cid:FILENAME</code> instead of providing an external link to the image.</td>\n</tr>\n<tr>\n<td><em>messages[].content.inlineImages[].type</em></td>\n<td>String</td>\n<td><strong>Required.</strong></td>\n</tr>\n<tr>\n<td><em>messages[].content.defaultPlaceholders</em></td>\n<td>String</td>\n<td>General placeholders: <code>{\"ph1\": \"Success\"}</code> will replace the key <code>{{ph1}}</code> with the value Success throughout the email, including the <code>subject</code>, <code>text</code>, and HTML. If there are multiple recipients in the To field, this placeholder will use the same value for the key ph1 for all recipients.</td>\n</tr>\n<tr>\n<td><em>messages[].content.landingPagePlaceholders</em></td>\n<td>String</td>\n<td>Personalize Opt-Out Landing Page by inserting placeholders. Insert placeholder or tag while designing landing page. Value should be defined as: <code>{\"unsubscribe\": \"Unsubscribe\"}</code></td>\n</tr>\n<tr>\n<td><em>messages[].content.optoutLandingPageId</em></td>\n<td>String</td>\n<td>The Opt-Out Landing Page ID specifies the page to be displayed when an end user clicks the unsubscribe link. If the ID is not provided, the default opt-out landing page will be used. Create a landing page over VHD web interface and use its ID, for example, <code>1_23456.</code></td>\n</tr>\n<tr>\n<td><em>messages[].content.templateLanguageVersion</em></td>\n<td>String</td>\n<td>Indicates the version of the template language to be used in the current message template. Use version 1 for the older template language and version 2 to access features of the new template language. If not specified, version 1 will be used by default.</td>\n</tr>\n<tr>\n<td><em>messages[].content.headers</em></td>\n<td>String</td>\n<td>Additional email headers for customization that can be provided in a form of JSON. Example: <code>headers={\"X-CustomHeader\": \"Header value\"}</code>. There are a few exceptions of headers which are not adjustable through this option: <code>To</code>, <code>Cc</code>, <code>Bcc</code>, <code>Subject</code>, <code>Content-Type</code>, <code>DKIM-Signature</code>, <code>Content-Transfer-Encoding</code>, <code>Return-Path</code>, <code>MIME-Version</code></td>\n</tr>\n<tr>\n<td><em>messages[].options</em></td>\n<td>Object</td>\n<td>Message options.</td>\n</tr>\n<tr>\n<td><em>messages[].options.platform</em></td>\n<td>Object</td>\n<td>Platform options. For more details, see documentation.</td>\n</tr>\n<tr>\n<td><em>messages[].options.platform.entityId</em></td>\n<td>String</td>\n<td>Used when specifying an entity in outbound send requests. It is also returned in notification events. For detailed usage, refer to the documentation.</td>\n</tr>\n<tr>\n<td><em>messages[].options.platform.applicationId</em></td>\n<td>String</td>\n<td>Used when specifying an application in outbound send requests. It is also returned in notification events. For detailed usage, refer to the documentation.</td>\n</tr>\n<tr>\n<td><em>messages[].options.validityPeriod</em></td>\n<td>Object</td>\n<td>Message validity period. Once expired, the message won't be sent. Validity period longer than 48h is not supported. If exceeded, it will be automatically set to 48h.</td>\n</tr>\n<tr>\n<td><em>messages[].options.validityPeriod.amount</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Message validity period's value. If <code>timeUnit</code> is not set, it will default to <code>MINUTES</code>.</td>\n</tr>\n<tr>\n<td><em>messages[].options.validityPeriod.timeUnit</em></td>\n<td>String</td>\n<td>Message validity period time unit. One of: <code>SECONDS</code>, <code>MINUTES</code>, <code>HOURS</code>.</td>\n</tr>\n<tr>\n<td><em>messages[].options.deliveryTimeWindow</em></td>\n<td>Object</td>\n<td>Sets specific message delivery window outside of which messages won't be delivered. Often, used when there are restrictions on when messages can be sent. The exact time of the day to start sending messages can be defined using the <code>from</code> property. The exact time of the day to end sending messages can be defined using the <code>to</code> property. Properties <code>from</code> and <code>to</code> should be both provided with the minimum 1 hour difference or omitted.</td>\n</tr>\n<tr>\n<td><em>messages[].options.deliveryTimeWindow.days</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> Days of the week which are included in the delivery time window. At least one day must be provided. Separate multiple days with a comma.</td>\n</tr>\n<tr>\n<td><em>messages[].options.deliveryTimeWindow.from</em></td>\n<td>Object</td>\n<td>The exact time of the day. The time is expressed in the UTC time zone.</td>\n</tr>\n<tr>\n<td><em>messages[].options.deliveryTimeWindow.from.hour</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Hour when the time window opens when used in the <code>from</code> property or closes when used in the <code>to</code> property.</td>\n</tr>\n<tr>\n<td><em>messages[].options.deliveryTimeWindow.from.minute</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Minute when the time window opens when used in the <code>from</code> property or closes when used in the <code>to</code> property.</td>\n</tr>\n<tr>\n<td><em>messages[].options.deliveryTimeWindow.to</em></td>\n<td>Object</td>\n<td>The exact time of the day. The time is expressed in the UTC time zone.</td>\n</tr>\n<tr>\n<td><em>messages[].options.deliveryTimeWindow.to.hour</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Hour when the time window opens when used in the <code>from</code> property or closes when used in the <code>to</code> property.</td>\n</tr>\n<tr>\n<td><em>messages[].options.deliveryTimeWindow.to.minute</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Minute when the time window opens when used in the <code>from</code> property or closes when used in the <code>to</code> property.</td>\n</tr>\n<tr>\n<td><em>messages[].options.campaignReferenceId</em></td>\n<td>String</td>\n<td>ID that allows you to track, analyze, and show an aggregated overview and the performance of individual campaigns per sending channel.</td>\n</tr>\n<tr>\n<td><em>messages[].webhooks</em></td>\n<td>Object</td>\n<td>Provides options for configuring message webhooks.</td>\n</tr>\n<tr>\n<td><em>messages[].webhooks.delivery</em></td>\n<td>Object</td>\n<td>Provides options for configuring the delivery report behavior.</td>\n</tr>\n<tr>\n<td><em>messages[].webhooks.delivery.url</em></td>\n<td>String</td>\n<td>The URL on your call back server where a delivery report will be sent. If your URL becomes unavailable then the retry cycle uses the following formula: <code>1min + (1min * retryNumber * retryNumber)</code>.</td>\n</tr>\n<tr>\n<td><em>messages[].webhooks.delivery.intermediateReport</em></td>\n<td>Boolean</td>\n<td>The real-time intermediate delivery report containing GSM error codes, messages status, pricing, network and country codes, etc., which will be sent on your callback server. Defaults to <code>false</code>.</td>\n</tr>\n<tr>\n<td><em>messages[].webhooks.delivery.notify</em></td>\n<td>Boolean</td>\n<td>Notify enables you to specify your preferences for receiving DLRs. If set to false, no DLR will be sent. Note: When no webhook is specified in the request and notify is set to 'true' or not defined, your Subscription settings will apply.</td>\n</tr>\n<tr>\n<td><em>messages[].webhooks.contentType</em></td>\n<td>String</td>\n<td>Preferred delivery report content type, <code>application/json</code> or <code>application/xml</code>.</td>\n</tr>\n<tr>\n<td><em>messages[].webhooks.callbackData</em></td>\n<td>String</td>\n<td>Additional data that can be used for identifying, managing, or monitoring a message. Data included here will also be automatically included in the message Delivery Report. The maximum value is 4000 characters.</td>\n</tr>\n<tr>\n<td><em>messages[].ips</em></td>\n<td>Object</td>\n<td>IP options per message.</td>\n</tr>\n<tr>\n<td><em>messages[].ips.ipPoolId</em></td>\n<td>String</td>\n<td>The ID of the IP pool that will be used to send the email.</td>\n</tr>\n<tr>\n<td><em>messages[].placeholdersMasking</em></td>\n<td>Array</td>\n<td>Options to full or partially mask placeholders.</td>\n</tr>\n<tr>\n<td><em>messages[].placeholdersMasking[].name</em></td>\n<td>String</td>\n<td><strong>Required.</strong> The placeholder name that needs to be masked.</td>\n</tr>\n<tr>\n<td><em>messages[].placeholdersMasking[].side</em></td>\n<td>String</td>\n<td>The side from which characters should be hidden. Options are <code>L</code> (left) or <code>R</code> (right).</td>\n</tr>\n<tr>\n<td><em>messages[].placeholdersMasking[].maskChar</em></td>\n<td>String</td>\n<td>The character used to replace the masked placeholders, e.g., <code>*</code>, <code>+</code>.</td>\n</tr>\n<tr>\n<td><em>messages[].placeholdersMasking[].visibleChars</em></td>\n<td>Int</td>\n<td>The number of characters to leave visible. Ignored if a delimiter is specified. Defaults to 0 (i.e., all characters hidden) if not specified.</td>\n</tr>\n<tr>\n<td><em>messages[].placeholdersMasking[].delimiter</em></td>\n<td>String</td>\n<td>Optional delimiter character (e.g., <code>@</code>, <code>/</code>). When specified, masking applies only to the part of the placeholder before or after the delimiter, depending on the <code>side</code> value. If this is set, the <code>visibleChars</code> field is ignored.</td>\n</tr>\n<tr>\n<td><em>messages[].placeholdersMasking[].skipChars</em></td>\n<td>Array</td>\n<td>A list of characters that should not be masked, even if they fall within the masked region. For example, if we want to mask <code>(385)-9134849</code> into <code>(***)-********</code>, we should include the characters <code>(</code>,<code>)</code> and <code>-</code> in this list to preserve the formatting. In this case, only digits will be masked while parentheses and dashes remain visible.</td>\n</tr>\n<tr>\n<td><em>messages[].storage</em></td>\n<td>Object</td>\n<td>Email storage options per message.</td>\n</tr>\n<tr>\n<td><em>messages[].storage.skipPassive</em></td>\n<td>Boolean</td>\n<td>Set to true to skip passive email storage (long-term storage used for compliance, legal, or audit purposes). If <code>false</code> or not set, the account-level setting is used.</td>\n</tr>\n<tr>\n<td><em>messages[].storage.skipActive</em></td>\n<td>Boolean</td>\n<td>Set to true to skip active email storage (short-term storage used for troubleshooting or support). If <code>false</code> or not set, the account-level setting is used.</td>\n</tr>\n<tr>\n<td><em>options</em></td>\n<td>Object</td>\n<td>Options applicable to all messages in the request.</td>\n</tr>\n<tr>\n<td><em>options.schedule</em></td>\n<td>Object</td>\n<td>Options for scheduling a message.</td>\n</tr>\n<tr>\n<td><em>options.schedule.bulkId</em></td>\n<td>String</td>\n<td>Unique ID assigned to the request if messaging multiple recipients or sending multiple messages via a single API request. If not provided, it will be auto-generated and returned in the API response.</td>\n</tr>\n<tr>\n<td><em>options.schedule.sendAt</em></td>\n<td>String</td>\n<td>Date and time when the message is to be sent. Used for scheduled messages. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSSZ</code>, and can only be scheduled for no later than 5 days in advance.</td>\n</tr>\n<tr>\n<td><em>options.tracking</em></td>\n<td>Object</td>\n<td>Sets up URL shortening and tracking feature.</td>\n</tr>\n<tr>\n<td><em>options.tracking.track</em></td>\n<td>Boolean</td>\n<td>Enable or disable open and click tracking. Passing true will only enable tracking and the statistics will be visible in the web interface alone. This can be explicitly overridden by <code>trackClicks</code> and <code>trackOpens</code>.</td>\n</tr>\n<tr>\n<td><em>options.tracking.trackOpens</em></td>\n<td>Boolean</td>\n<td>This parameter enables or disables track open feature.</td>\n</tr>\n<tr>\n<td><em>options.tracking.trackClicks</em></td>\n<td>Boolean</td>\n<td>This parameter enables or disables track click feature.</td>\n</tr>\n<tr>\n<td><em>options.tracking.trackingUrl</em></td>\n<td>String</td>\n<td>The URL on your callback server on which the open and click notifications will be sent. See Tracking Notifications for details.</td>\n</tr>\n<tr>\n<td><em>options.tracking.trackingPixelPosition</em></td>\n<td>String</td>\n<td>This parameter specifies the position of the open tracking pixel within the email content. Allowed values are <code>TOP</code> and <code>BOTTOM</code>. If no value is provided, the default is <code>TOP</code>.</td>\n</tr>\n<tr>\n<td><em>options.clientPriority</em></td>\n<td>String</td>\n<td>Client priority set on request. Must be 'HIGH', 'STANDARD' or 'LOW'. One of: <code>HIGH</code>, <code>STANDARD</code>, <code>LOW</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>. Invalid requests return <code>400</code> with the list of <code>violations</code>, missing or invalid credentials <code>401</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>Unique ID assigned to the request if messaging multiple recipients or sending multiple messages via a single API request. If not provided, it will be auto-generated and returned in the API response. Typically used for fetching delivery reports and message logs.</td>\n</tr>\n<tr>\n<td><em>messages</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> An array of message objects of a single message or multiple messages sent under one bulk ID.</td>\n</tr>\n<tr>\n<td><em>messages[].messageId</em></td>\n<td>String</td>\n<td>Unique message ID. If not provided, it will be auto-generated and returned in the API response.</td>\n</tr>\n<tr>\n<td><em>messages[].status</em></td>\n<td>Object</td>\n<td>Indicates the status of the message and how to recover from an error should there be any.</td>\n</tr>\n<tr>\n<td><em>messages[].status.groupId</em></td>\n<td>Int</td>\n<td>Status group ID.</td>\n</tr>\n<tr>\n<td><em>messages[].status.groupName</em></td>\n<td>String</td>\n<td>Status group name that describes which category the status code belongs to, i.e., PENDING, UNDELIVERABLE, DELIVERED, EXPIRED, REJECTED. One of: <code>ACCEPTED</code>, <code>PENDING</code>, <code>UNDELIVERABLE</code>, <code>DELIVERED</code>, <code>EXPIRED</code>, <code>REJECTED</code>.</td>\n</tr>\n<tr>\n<td><em>messages[].status.id</em></td>\n<td>Int</td>\n<td>Status code ID.</td>\n</tr>\n<tr>\n<td><em>messages[].status.name</em></td>\n<td>String</td>\n<td>Status code name.</td>\n</tr>\n<tr>\n<td><em>messages[].status.description</em></td>\n<td>String</td>\n<td>Human-readable description of the status.</td>\n</tr>\n<tr>\n<td><em>messages[].status.action</em></td>\n<td>String</td>\n<td>Action to take to recover from the error.</td>\n</tr>\n<tr>\n<td><em>messages[].destination</em></td>\n<td>String</td>\n<td>The destination address of the message, i.e., its recipient.</td>\n</tr>\n<tr>\n<td><em>messages[].details</em></td>\n<td>Object</td>\n<td>Other details of the message.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Errors use the common format: <code>errorCode</code>, <code>description</code>, <code>action</code>, <code>violations[]</code> (<code>property</code>, <code>violation</code>).</p>\n","urlObject":{"protocol":"https","path":["email","4","messages"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"9479cce9-8496-4f64-a5c5-06a8cd66e528","name":"Email accepted","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"messages\": [\n    {\n      \"sender\": \"example@vhdmedia.eu\",\n      \"destinations\": [\n        {\n          \"to\": [\n            {\n              \"destination\": \"jane.smith@vhdmedia.se\",\n              \"placeholders\": \"{\\\"name\\\":\\\"Jane\\\"}\"\n            }\n          ]\n        }\n      ],\n      \"content\": {\n        \"subject\": \"Welcome to VHD, {{name}}\",\n        \"html\": \"<h1>Hello {{name}}</h1><p>This is a test email from the VHD API.</p>\",\n        \"text\": \"Dear {{name}}, this is a test email from the VHD API.\"\n      },\n      \"webhooks\": {\n        \"delivery\": {\n          \"url\": \"https://www.example.com/email/delivery\",\n          \"intermediateReport\": true,\n          \"notify\": true\n        },\n        \"contentType\": \"application/json\",\n        \"callbackData\": \"DLR callback data\"\n      }\n    }\n  ],\n  \"options\": {\n    \"tracking\": {\n      \"trackOpens\": true,\n      \"trackClicks\": true\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/email/4/messages"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"bulkId\": \"x7kferxomzc2nlihlouz\",\n  \"messages\": [\n    {\n      \"messageId\": \"claxbdvqvssvnc12hypo\",\n      \"status\": {\n        \"groupId\": 1,\n        \"groupName\": \"PENDING\",\n        \"id\": 26,\n        \"name\": \"PENDING_ACCEPTED\",\n        \"description\": \"Message accepted, pending for delivery.\"\n      },\n      \"destination\": \"jane.smith@vhdmedia.se\"\n    }\n  ]\n}"},{"id":"3c600934-371f-4ab9-bba7-716c942b8d34","name":"Bad request - required fields are missing","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"messages\": [\n    {\n      \"destinations\": []\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/email/4/messages"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E400\",\n  \"description\": \"Request cannot be processed.\",\n  \"action\": \"Check the syntax, violations and adjust the request.\",\n  \"violations\": [\n    {\n      \"property\": \"messages[0].destinations\",\n      \"violation\": \"must not be empty\"\n    },\n    {\n      \"property\": \"messages[0]\",\n      \"violation\": \"Sender is mandatory if templateId is missing\"\n    },\n    {\n      \"property\": \"messages[0].content\",\n      \"violation\": \"must not be null\"\n    }\n  ],\n  \"resources\": []\n}"},{"id":"b73c2eb4-a5cb-4cb5-abeb-5770925d9d64","name":"Unauthorized - invalid API key","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"messages\": [\n    {\n      \"sender\": \"example@vhdmedia.eu\",\n      \"destinations\": [\n        {\n          \"to\": [\n            {\n              \"destination\": \"jane.smith@vhdmedia.se\",\n              \"placeholders\": \"{\\\"name\\\":\\\"Jane\\\"}\"\n            }\n          ]\n        }\n      ],\n      \"content\": {\n        \"subject\": \"Welcome to VHD, {{name}}\",\n        \"html\": \"<h1>Hello {{name}}</h1><p>This is a test email from the VHD API.</p>\",\n        \"text\": \"Dear {{name}}, this is a test email from the VHD API.\"\n      },\n      \"webhooks\": {\n        \"delivery\": {\n          \"url\": \"https://www.example.com/email/delivery\",\n          \"intermediateReport\": true,\n          \"notify\": true\n        },\n        \"contentType\": \"application/json\",\n        \"callbackData\": \"DLR callback data\"\n      }\n    }\n  ],\n  \"options\": {\n    \"tracking\": {\n      \"trackOpens\": true,\n      \"trackClicks\": true\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/email/4/messages"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E401\",\n  \"description\": \"The request lacks valid authentication credentials for the requested resource.\",\n  \"action\": \"Check the resources and adjust authentication credentials.\",\n  \"violations\": [],\n  \"resources\": []\n}"}],"_postman_id":"fcc95463-f3f1-4b70-a561-1597e9af2842"},{"name":"Send MIME email (API v4)","event":[{"listen":"test","script":{"exec":["// Tests for Send MIME email (API v4).","pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var res;","pm.test(\"Response body is valid JSON\", function () { res = pm.response.json(); });","","pm.test(\"Response has bulkId\", function () {","    pm.expect(res).to.have.property('bulkId').that.is.a('string');","});","","pm.test(\"Each message has the documented fields\", function () {","    pm.expect(res).to.have.property('messages').that.is.an('array').with.lengthOf.at.least(1);","    res.messages.forEach(function (m) {","        pm.expect(m).to.have.property('to').that.is.a('string');","        pm.expect(m).to.have.property('messageId').that.is.a('string');","        pm.expect(m.status).to.include.all.keys('groupId', 'groupName', 'id', 'name', 'description');","    });","});",""],"type":"text/javascript","packages":{}}}],"id":"384e5a92-9797-41a9-bba6-b3b628f23b11","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"from\": \"example@vhdmedia.eu\",\n  \"destinations\": [\n    \"jane.smith@vhdmedia.se\"\n  ],\n  \"mimeMessage\": \"TUlNRS1WZXJzaW9uOiAxLjANCkZyb206IGV4YW1wbGVAdmhkbWVkaWEuZXUNClRvOiBqYW5lLnNtaXRoQHZoZG1lZGlhLnNlDQpTdWJqZWN0OiBWSEQgQVBJIE1JTUUgdGVzdA0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04DQoNClRoaXMgaXMgYSBNSU1FIHRlc3QgZW1haWwgZnJvbSB0aGUgVkhEIEFQSS4=\",\n  \"callbackData\": \"DLR callback data\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/email/4/mime","description":"<p>Send an email that you have already built as a complete MIME message, for example when your application produces the message with its own mail library. Use <strong>Send email messages (API v4)</strong> if you want VHD to build the message from a subject, text, and HTML.</p>\n<blockquote>\n<p><strong>The MIME message must be base64-encoded.</strong> Build the full message (headers, blank line, body), then base64-encode the whole thing and send it in <code>mimeMessage</code>. The addresses in <code>destinations</code> decide who receives the email; they take precedence over the <code>To</code> header inside the message.</p>\n</blockquote>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>messageId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the message sent to a recipient.</td>\n</tr>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the sent bulk. This filter will enable you to query delivery reports for all the messages using just one request. You will receive a <code>bulkId</code> in the response after sending an email request. If you don't set your own <code>bulkId</code>, unique ID will be generated by our system and returned in the API response. (Optional Field)\")</td>\n</tr>\n<tr>\n<td><em>from</em></td>\n<td>String</td>\n<td>The email address specified in this field takes precedence over the From header in the MIME message. If you leave this field empty, the From address in the MIME message will be used instead. If you provide both values and they are different, their domains must match at the organizational level; otherwise, the request will be rejected.</td>\n</tr>\n<tr>\n<td><em>destinations</em></td>\n<td>Array</td>\n<td>A list of recipient email addresses. The email addresses specified in this field takes precedence over the To, CC, and BCC headers in the MIME message. Only the addresses in this list will receive the final email. If you leave this field empty, To, CC, and BCC headers in the MIME message will be used instead. Note: Maximum number of recipients per request is 1000 overall including to, cc and bcc field.</td>\n</tr>\n<tr>\n<td><em>mimeMessage</em></td>\n<td>String</td>\n<td><strong>Required.</strong> This field accepts a complete email message serialized in the MIME format, conforming to RFC 5322 and MIME-related standards (RFCs 2045–2047, RFC 2183). The MIME message must be correctly constructed per the following requirements as if it were being sent via traditional SMTP. The entire MIME message (including headers and body) must be <code>base64-encoded</code> before being sent. When using this field, these are the requirements: <strong>-</strong> The message must consist of a set of header fields, followed by a blank line (CRLF), and then the message body <strong>-</strong> All required and optional fields must be properly formatted with header-name, colon, and header-value <strong>-</strong> If any MIME part contains non-7-bit-ASCII data (e.g., UTF-8 text, binaries), that part must be encoded <strong>-</strong> If your message uses multipart content (attachments, alternative bodies, etc.), each MIME part must contain <code>Content-Type</code> header. For encoded parts, include <code>Content-Transfer-Encoding</code>. For attachments, include a valid <code>Content-Disposition</code>. We also support specifying additional headers in your MIME message, such as <code>List-Unsubscribe</code>, <code>List-Unsubscribe-Post</code>, <code>In-Reply-To</code>, <code>References</code> and <code>Message-ID</code>.</td>\n</tr>\n<tr>\n<td><em>intermediateReport</em></td>\n<td>Boolean</td>\n<td>The real-time Intermediate delivery report that will be sent on your callback server.</td>\n</tr>\n<tr>\n<td><em>notifyUrl</em></td>\n<td>String</td>\n<td>The URL on your callback server on which the Delivery report will be sent.</td>\n</tr>\n<tr>\n<td><em>notifyContentType</em></td>\n<td>String</td>\n<td>Preferred Delivery report content type. Can be <code>application/json</code> or <code>application/xml</code>.</td>\n</tr>\n<tr>\n<td><em>callbackData</em></td>\n<td>String</td>\n<td>Additional client data that will be sent on the notifyUrl.</td>\n</tr>\n<tr>\n<td><em>trackingUrl</em></td>\n<td>String</td>\n<td>The URL on your callback server on which the open and click notifications will be sent. See Tracking Notifications for details.</td>\n</tr>\n<tr>\n<td><em>clientPriority</em></td>\n<td>String</td>\n<td>Adds a priority rating to this email message. Allowed values are <code>HIGH</code>, <code>STANDARD</code> and <code>LOW</code>. Messages with a higher priority value sent by your account are prioritized over messages with a lower priority value sent by your account. If no priority value is provided, messages will be treated with <code>STANDARD</code> priority by default.</td>\n</tr>\n<tr>\n<td><em>applicationId</em></td>\n<td>String</td>\n<td>Required for application use in a send request for outbound traffic. Returned in notification events.</td>\n</tr>\n<tr>\n<td><em>entityId</em></td>\n<td>String</td>\n<td>Required for entity use in a send request for outbound traffic. Returned in notification events.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies a list of message responses.</td>\n</tr>\n<tr>\n<td><em>messages</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> List of message response details.</td>\n</tr>\n<tr>\n<td><em>messages[].to</em></td>\n<td>String</td>\n<td><strong>Required.</strong> The destination address of the message.</td>\n</tr>\n<tr>\n<td><em>messages[].messageId</em></td>\n<td>String</td>\n<td><strong>Required.</strong> The ID that uniquely identifies a message response.</td>\n</tr>\n<tr>\n<td><em>messages[].status</em></td>\n<td>Object</td>\n<td><strong>Required.</strong> Indicates the message status.</td>\n</tr>\n<tr>\n<td><em>messages[].status.groupId</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Status group ID.</td>\n</tr>\n<tr>\n<td><em>messages[].status.groupName</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Status group name.</td>\n</tr>\n<tr>\n<td><em>messages[].status.id</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Status ID.</td>\n</tr>\n<tr>\n<td><em>messages[].status.name</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Status name.</td>\n</tr>\n<tr>\n<td><em>messages[].status.description</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Status description.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Invalid requests return <code>400</code> (for example <code>mimeMessage must be base64 encoded string</code>) and missing or invalid credentials <code>401</code>, in the format <code>requestError.serviceException</code> with <code>messageId</code>, <code>text</code>, and <code>validationErrors</code>.</p>\n","urlObject":{"protocol":"https","path":["email","4","mime"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"5c110e19-0e40-44b8-9cf8-11c91b180d2e","name":"Email accepted","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"from\": \"example@vhdmedia.eu\",\n  \"destinations\": [\n    \"jane.smith@vhdmedia.se\"\n  ],\n  \"mimeMessage\": \"TUlNRS1WZXJzaW9uOiAxLjANCkZyb206IGV4YW1wbGVAdmhkbWVkaWEuZXUNClRvOiBqYW5lLnNtaXRoQHZoZG1lZGlhLnNlDQpTdWJqZWN0OiBWSEQgQVBJIE1JTUUgdGVzdA0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04DQoNClRoaXMgaXMgYSBNSU1FIHRlc3QgZW1haWwgZnJvbSB0aGUgVkhEIEFQSS4=\",\n  \"callbackData\": \"DLR callback data\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/email/4/mime"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"bulkId\": \"zyh6lbgbmuakoy2b96x4\",\n  \"messages\": [\n    {\n      \"to\": \"jane.smith@vhdmedia.se\",\n      \"messageId\": \"62tkkkoury1z18udltu7\",\n      \"status\": {\n        \"groupId\": 1,\n        \"groupName\": \"PENDING\",\n        \"id\": 26,\n        \"name\": \"PENDING_ACCEPTED\",\n        \"description\": \"Message accepted, pending for delivery.\"\n      }\n    }\n  ]\n}"},{"id":"8bde9374-5813-4e35-8dc0-24d1b9fa8a16","name":"Bad request - mimeMessage is not base64","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"from\": \"example@vhdmedia.eu\",\n  \"destinations\": [\n    \"jane.smith@vhdmedia.se\"\n  ],\n  \"mimeMessage\": \"not base64\",\n  \"callbackData\": \"DLR callback data\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/email/4/mime"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"BAD_REQUEST\",\n      \"text\": \"Bad Request\",\n      \"validationErrors\": {\n        \"mimeMessage\": [\n          \"must be base64 encoded string\"\n        ]\n      }\n    }\n  }\n}"},{"id":"d4ee2c82-910b-4fdd-9303-2a8697057120","name":"Unauthorized - invalid API key","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"from\": \"example@vhdmedia.eu\",\n  \"destinations\": [\n    \"jane.smith@vhdmedia.se\"\n  ],\n  \"mimeMessage\": \"TUlNRS1WZXJzaW9uOiAxLjANCkZyb206IGV4YW1wbGVAdmhkbWVkaWEuZXUNClRvOiBqYW5lLnNtaXRoQHZoZG1lZGlhLnNlDQpTdWJqZWN0OiBWSEQgQVBJIE1JTUUgdGVzdA0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04DQoNClRoaXMgaXMgYSBNSU1FIHRlc3QgZW1haWwgZnJvbSB0aGUgVkhEIEFQSS4=\",\n  \"callbackData\": \"DLR callback data\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/email/4/mime"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Invalid login details\"\n    }\n  }\n}"}],"_postman_id":"384e5a92-9797-41a9-bba6-b3b628f23b11"},{"name":"Send fully featured email (API v3)","event":[{"listen":"test","script":{"exec":["// Test if response status code is 200","pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});","","// Parse response body as JSON","var responseBody = pm.response.json();","","// Parse the request body from form-data","var formData = pm.request.body.formdata;","","// Extract the 'from', 'to', 'subject', 'text', and 'html' properties from the form-data","var from, to, subject, text, html;","formData.each(function(item) {","    switch (item.key) {","        case \"from\":","            from = item.value;","            break;","        case \"to\":","            to = item.value;","            break;","        case \"subject\":","            subject = item.value;","            break;","        case \"text\":","            text = item.value;","            break;","        case \"html\":","            html = item.value;","            break;","    }","});","","// Test if 'from' property exists in the form-data and is valid","pm.test(\"From field exists and is a valid email address\", function () {","    pm.expect(from).to.exist;","    pm.expect(from).to.match(/^[\\w-.]+@([\\w-]+\\.)+[\\w-]{2,4}$/);","});","","","// Test if 'subject' property exists in the form-data","pm.test(\"'Subject' field exists and is a string\", function () {","    pm.expect(subject).to.exist;","    pm.expect(subject).to.be.a('string');","});","","// Test if either 'text' or 'html' field exists in the form-data","pm.test(\"At least 'text' or 'html' field exists\", function () {","    pm.expect(text || html).to.exist;","    if (text) {","        pm.expect(text).to.be.a('string');","    }","    if (html) {","        pm.expect(html).to.be.a('string');","    }","});","","// Test if response contains 'messages' array","pm.test(\"Response contains 'messages' array\", function () {","    pm.expect(responseBody).to.have.property('messages').that.is.an('array');","});","","// Test if each message in the 'messages' array contains the expected properties","pm.test(\"Each message contains expected properties\", function () {","    responseBody.messages.forEach(function(message) {","        pm.expect(message).to.have.property('messageId');","        pm.expect(message).to.have.property('to');","        pm.expect(message).to.have.property('status');","        ","        var status = message.status;","        pm.expect(status).to.have.property('description');","        pm.expect(status).to.have.property('groupId');","        pm.expect(status).to.have.property('groupName');","        pm.expect(status).to.have.property('id');","        pm.expect(status).to.have.property('name');","    });","});","","// Test if system-assigned bulkId exists in the response","pm.test(\"BulkId exists in the response\", function () {","    pm.expect(responseBody).to.have.property('bulkId');","});",""],"type":"text/javascript","packages":{}}}],"id":"14eaa0bf-924e-4bbc-9e06-2abc9cddb079","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"key":"from","value":"example@vhdmedia.eu","type":"text"},{"key":"to","value":"jane.smith@vhdmedia.se","type":"text","disabled":true},{"key":"to","value":"{ \"to\": \"jane.smith@vhdmedia.se\", \"placeholders\" :{ \"name\": \"Jane\"}}","type":"text"},{"key":"to","value":"{ \"to\": \"tom.smith@vhdmedia.se\", \"placeholders\" :{ \"name\": \"Tom\"}}","type":"text"},{"key":"subject","value":"Sneakers","type":"text"},{"key":"text","value":"Dear {{name}}, this is mail body text with placeholder in body {{ph1}}","type":"text","disabled":true},{"key":"html","value":"<h1>Html body</h1><p>Rich HTML message body.</p>","type":"text","disabled":true},{"key":"ampHtml","value":"","type":"text","disabled":true},{"key":"templateId","value":"200000000034913","type":"text"},{"key":"attachment","type":"file","fileNotInWorkingDirectoryWarning":"This file isn't in your working directory. Teammates you share this request with won't be able to use this file. To make collaboration easier you can setup your working directory in Settings.","filesNotInWorkingDirectory":["/Users/johnpaulbabu/Desktop/sample.m4a"],"src":"/Users/johnpaulbabu/Desktop/sample.m4a","disabled":true},{"key":"inlineImage","value":"","type":"text","disabled":true},{"key":"intermediateReport","value":"true","type":"text"},{"key":"notifyUrl","value":"https://www.example.com/email/advanced","type":"text","disabled":true},{"key":"notifyContentType","value":"\"application/json\"","type":"text"},{"key":"callbackData","value":"DLR callback data","type":"text"},{"key":"track","value":"","type":"text","disabled":true},{"key":"trackClicks","value":"","type":"text","disabled":true},{"key":"trackOpens","value":"","type":"text","disabled":true},{"key":"trackingUrl","value":"","type":"text","disabled":true},{"key":"bulkId","value":"customBulkId1","type":"text"},{"key":"messageId","value":"","type":"text","disabled":true},{"key":"replyTo","value":"contact@vhdmedia.se","type":"text","disabled":true},{"key":"defaultPlaceholders","value":"{\"ph1\": \"Success\"}","type":"text","disabled":true},{"key":"sendAt","value":"2023-05-04T16:00:00.085-00:00","type":"text","disabled":true}]},"url":"https://go2.vhdmedia.se/email/3/send","description":"<blockquote>\n<p><strong>Previous version.</strong> New integrations should use <strong>Send email messages (API v4)</strong> (<code>POST /email/4/messages</code>). This request still works.</p>\n</blockquote>\n<p>Send an email or multiple emails to a recipient or multiple recipients with CC/BCC enabled.</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>from</td>\n<td>string</td>\n<td>Email address with optional sender name.  <br />  <br />Note: This field is required if templateId is not present</td>\n</tr>\n<tr>\n<td>to</td>\n<td>Array of stings &lt;=1000  <br />  <br />Required</td>\n<td>Email address of the recipient in a form of To=\"<a href=\"https://mailto:john.smith@somecompany.com\">john.smith@somecompany.com</a>\". As optional feature on this field, a specific placeholder can be defined whose value will apply only for this destination. Given To value should look like: To= {\"to\": \"<a href=\"https://mailto:john.smith@somecompany.com\">john.smith@somecompany.com</a>\",\"placeholders\": {\"name\": \"John\"}} To= {\"to\": \"<a href=\"https://mailto:alice.grey@somecompany.com\">alice.grey@somecompany.com</a>\",\"placeholders\": {\"name\": \"Alice\"}}.  <br />  <br />Note: Maximum number of recipients per request is 1000 overall including to, cc and bcc field.</td>\n</tr>\n<tr>\n<td>cc</td>\n<td>Array of strings &lt;= 1000</td>\n<td>CC recipient email address.  <br />  <br />Note: Maximum number of recipients per request is 1000 overall including to, cc and bcc field.</td>\n</tr>\n<tr>\n<td>bcc</td>\n<td>Array of strings &lt;= 1000</td>\n<td>BCC recipient email address.  <br />  <br />Note: Maximum number of recipients per request is 1000 overall including to, cc and bcc field.</td>\n</tr>\n<tr>\n<td>subject</td>\n<td>string [ 1 .. 1000 ]</td>\n<td>Message subject.  <br />  <br />Note: This field is required if templateId is not present.</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Body of the message.</td>\n</tr>\n<tr>\n<td>html</td>\n<td>string</td>\n<td>HTML body of the message. If html and text fields are present, the text field will be ignored and html will be delivered as a message body.</td>\n</tr>\n<tr>\n<td>ampHtml</td>\n<td>string</td>\n<td>Amp HTML body of the message. If ampHtml is present, html is mandatory. Amp HTML is not supported by all the email clients. Please check this link for configuring gmail client <a href=\"https://developers.google.com/gmail/ampemail/\">https://developers.google.com/gmail/ampemail/</a>.</td>\n</tr>\n<tr>\n<td>templateId</td>\n<td>integer</td>\n<td>Template ID used for generating email content. The template is created over the VHD web interface. If templateId is present, then html and text values are ignored. TemplateId's are the number followed by # on the templates in the web ui.  <br />  <br />Note: templateId only supports the value of Broadcast. Content and Flow are not supported.</td>\n</tr>\n<tr>\n<td>attachment</td>\n<td>Array of strings</td>\n<td>File attachment.</td>\n</tr>\n<tr>\n<td>inlineImage</td>\n<td>Array of strings</td>\n<td>Allows for inserting an image file inside the HTML code of the email by using cid:FILENAME instead of providing an external link to the image.</td>\n</tr>\n<tr>\n<td>intermediateReport</td>\n<td>boolean</td>\n<td>The real-time Intermediate delivery report that will be sent on your callback server.</td>\n</tr>\n<tr>\n<td>notifyUrl</td>\n<td>string</td>\n<td>The URL on your callback server on which the Delivery report will be sent.</td>\n</tr>\n<tr>\n<td>notifyContentType</td>\n<td>string</td>\n<td>Preferred Delivery report content type. Can be application/json or application/xml.</td>\n</tr>\n<tr>\n<td>callbackData</td>\n<td>string [ 0 .. 4000 ]</td>\n<td>Additional client data that will be sent on the notifyUrl.</td>\n</tr>\n<tr>\n<td>track</td>\n<td>boolean</td>\n<td>Default: true  <br />Enable or disable open and click tracking. Passing true will only enable tracking and the statistics would be visible in the web interface alone. This can be explicitly overridden by trackClicks and trackOpens.</td>\n</tr>\n<tr>\n<td>trackClicks</td>\n<td>boolean</td>\n<td>This parameter enables or disables track click feature.</td>\n</tr>\n<tr>\n<td>trackOpens</td>\n<td>boolean</td>\n<td>This parameter enables or disables track open feature.</td>\n</tr>\n<tr>\n<td>trackingUrl</td>\n<td>string</td>\n<td>The URL on your callback server on which the open and click notifications will be sent. See Tracking Notifications for details.</td>\n</tr>\n<tr>\n<td>bulkId</td>\n<td>string</td>\n<td>The ID uniquely identifies the sent email request. This filter will enable you to query delivery reports for all the messages using just one request. You will receive a bulkId in the response after sending an email request. If you don't set your own bulkId, unique ID will be generated by our system and returned in the API response. (Optional Field)</td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>The ID that uniquely identifies the message sent to a recipient. (Optional Field)</td>\n</tr>\n<tr>\n<td>replyTo</td>\n<td>string</td>\n<td>Email address to which recipients of the email can reply.</td>\n</tr>\n<tr>\n<td>defaultPlaceholders</td>\n<td>string</td>\n<td>General placeholder, given in a form of json example: defaultPlaceholders={\"ph1\": \"Success\"}, which will replace given key {{ph1}} with given value Success anywhere in the email (subject, text, html...). In case of more destinations in To field, this placeholder will resolve the same value for key ph1.</td>\n</tr>\n<tr>\n<td>preserveRecipients</td>\n<td>boolean</td>\n<td>Default: false  <br />If set to true, the to recipients will see the list of all other recipients to get the email and the response will return only one messageId. Otherwise, each recipient will see just their own email and the response will return a unique messageId for each email recipient.</td>\n</tr>\n<tr>\n<td>sendAt</td>\n<td>string</td>\n<td>To schedule message at a given time. Time provided should be in UTC in the following format: yyyy-MM-dd'T'HH:mm:ss.SSSZ and cannot exceed 30 days in the future.</td>\n</tr>\n<tr>\n<td>landingPagePlaceholders</td>\n<td>string</td>\n<td>Personalize opt out landing page by inserting placeholders. Insert placeholder or tag while designing landing page.</td>\n</tr>\n<tr>\n<td>landingPageId</td>\n<td>string</td>\n<td>The ID of an opt out landing page to be used and displayed once an end user clicks the unsubscribe link. If not present, default opt out landing page will be displayed. Create a landing page in your VHD account and use its ID, e.g., #1_23456.</td>\n</tr>\n<tr>\n<td>templateLanguageVersion</td>\n<td>string</td>\n<td>Default: \"1\"  <br />Specifies template language version that will be used in the current message template. Use version 1 for previous version of template language. Use version 2 for features of the new template language. If not present version 1 will be used as default version.</td>\n</tr>\n<tr>\n<td>applicationId</td>\n<td>string</td>\n<td>Required for application use in a send request for outbound traffic. Returned in notification events.</td>\n</tr>\n<tr>\n<td>entityId</td>\n<td>string</td>\n<td>Required for entity use in a send request for outbound traffic. Returned in notification events.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"responses-200-successful-request\">Responses (200 Successful Request)</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>bulkId</td>\n<td>string</td>\n<td>The ID that uniquely identifies a list of message responses.</td>\n</tr>\n<tr>\n<td>messages  <br />  <br />  <br />  <br />  <br />Array [  <br />  <br />to  <br />  <br />  <br />  <br />messageId  <br />  <br />  <br />  <br />  <br />  <br />  <br />status  <br />  <br />{  <br />  <br />groupId  <br />  <br />groupName  <br />  <br />  <br />id  <br />  <br />  <br />name  <br />  <br />  <br />description  <br />  <br />  <br />}</td>\n<td>Array of objects  <br />  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />  <br />integer  <br />  <br />string  <br />  <br />  <br />integer  <br />  <br />  <br />string  <br />  <br />  <br />string</td>\n<td>List of message response details.  <br />  <br />  <br />  <br />  <br />The destination address of the message.  <br />  <br />The ID that uniquely identifies a message response.  <br />  <br />  <br />Indicates the message status.  <br />  <br />  <br />Status group ID.  <br />  <br />Status group name.  <br />  <br />Status ID.  <br />  <br />  <br />Status name  <br />  <br />  <br />Status description.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"error-object\">Error object</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>requestError  <br />{  <br />serviceException  <br />{  <br />  <br />messageId,  <br />  <br />  <br />text,  <br />  <br />validationErrors {  <br />property name*  <br />  <br />}  <br />}  <br />}</td>\n<td>object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />string  <br />  <br />  <br />string  <br />  <br />  <br />object  <br />  <br />  <br />Array of strings</td>\n<td>Identifier of the error.  <br />  <br />  <br />Detailed error description.  <br />  <br />  <br />  <br />  <br />Validation errors.</td>\n</tr>\n<tr>\n<td><em>groupName</em></td>\n<td>string</td>\n<td>Error group name.</td>\n</tr>\n<tr>\n<td><em>id</em></td>\n<td>int</td>\n<td>Error ID.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>string</td>\n<td>Error name.</td>\n</tr>\n<tr>\n<td><em>description</em></td>\n<td>string</td>\n<td>Human readable description of the error.</td>\n</tr>\n<tr>\n<td>permanent</td>\n<td>boolean</td>\n<td>Indicates whether the error is permanent.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-parameters\">Additional parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>trackingPixelPosition</em></td>\n<td>String</td>\n<td>This parameter specifies the position of the open tracking pixel within the email content. Allowed values are <code>TOP</code> and <code>BOTTOM</code>. If no value is provided, the default is <code>TOP</code>.</td>\n</tr>\n<tr>\n<td><em>campaignReferenceId</em></td>\n<td>String</td>\n<td>The ID that allows you to track, analyze, and show an aggregated overview and the performance of individual campaigns.</td>\n</tr>\n<tr>\n<td><em>clientPriority</em></td>\n<td>String</td>\n<td>Adds a priority rating to this email message. Allowed values are <code>HIGH</code>, <code>STANDARD</code> and <code>LOW</code>. Messages with a higher priority value sent by your account are prioritized over messages with a lower priority value sent by your account. If no priority value is provided, messages will be treated with <code>STANDARD</code> priority by default.</td>\n</tr>\n<tr>\n<td><em>headers</em></td>\n<td>String</td>\n<td>Additional email headers for customization that can be provided in a form of JSON. For example, you can override List-Unsubscribe header and provide your own custom one: <code>headers={\"List-Unsubscribe\": \"your unsubscribe link\", \"X-CustomHeader\": \"Header value\"}</code>. There are a few exceptions of headers which are not adjustable through this option: <code>To</code>, <code>Cc</code>, <code>Bcc</code>, <code>Subject</code>, <code>Content-Type</code>, <code>DKIM-Signature</code>, <code>Content-Transfer-Encoding</code>, <code>Return-Path</code>, <code>MIME-Version</code></td>\n</tr>\n<tr>\n<td><em>ipPoolId</em></td>\n<td>String</td>\n<td>The ID of the IP Pool which will be used for sending.</td>\n</tr>\n<tr>\n<td><em>skipPassiveStorage</em></td>\n<td>Boolean</td>\n<td>Set to true to skip passive email storage (long-term storage used for compliance, legal, or audit purposes). If <code>false</code> or not set, the account-level setting is used.</td>\n</tr>\n<tr>\n<td><em>skipActiveStorage</em></td>\n<td>Boolean</td>\n<td>Set to true to skip active email storage (short-term storage used for troubleshooting or support). If <code>false</code> or not set, the account-level setting is used.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["email","3","send"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"a1e63d7a-cb50-40ae-a426-3bfbb4990d9e","name":"Simple Email","originalRequest":{"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"key":"from","value":"example@vhdmedia.se","type":"text"},{"key":"to","value":"jane.smith@vhdmedia.se","type":"text"},{"key":"to","value":"{ \"to\": \"jane.smith@vhdmedia.se\", \"placeholders\" :{ \"Name\": \"Jane\"}}","type":"text","disabled":true},{"key":"to","value":"{ \"to\": \"tom.smith@vhdmedia.se\", \"placeholders\" :{ \"Name\": \"Tom\"}}","type":"text","disabled":true},{"key":"cc","value":"tom.smith@vhdmedia.se","type":"text"},{"key":"replyTo","value":"contact@vhdmedia.se","type":"text"},{"key":"subject","value":"Hello Word","type":"text"},{"key":"html","value":"<h1>Html body</h1><p>Rich HTML message body.</p>","type":"text"},{"key":"attachment","value":"","type":"text","disabled":true},{"key":"bulkId","value":"customBulkId1","type":"text"},{"key":"intermediateReport","value":"true","type":"text"},{"key":"defaultPlaceholders","value":"{\"ph1\": \"Success\"}","type":"text"},{"key":"notifyUrl","value":"https://www.example.com/email/advanced","type":"text","disabled":true},{"key":"notifyContentType","value":"\"application/json\"","type":"text","disabled":true},{"key":"callbackData","value":"DLR callback data","type":"text"},{"key":"text","value":"Hello World","type":"text","disabled":true},{"key":"text","value":"Dear {{name}}, this is mail body text with placeholder in body {{ph1}} ","type":"text","disabled":true}]},"url":"https://go2.vhdmedia.se/email/3/send"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Date","value":"Mon, 27 Mar 2023 09:53:22 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Server","value":"SMS API"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"X-Request-Id","value":"1679910802194990226"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"bulkId\": \"customBulkId1\",\n    \"messages\": [\n        {\n            \"to\": \"jane.smith@vhdmedia.se\",\n            \"messageId\": \"n48fjq86ugsccm4pzjxr\",\n            \"status\": {\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 26,\n                \"name\": \"PENDING_ACCEPTED\",\n                \"description\": \"Message accepted, pending for delivery.\"\n            }\n        }\n    ]\n}"},{"id":"875e22d9-d290-4a11-96c8-ce339c097e4b","name":"Fully featured email","originalRequest":{"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"key":"from","value":"example@vhdmedia.se","type":"text"},{"key":"to","value":"jane.smith@vhdmedia.se","type":"text","disabled":true},{"key":"to","value":"{ \"to\": \"jane.smith@vhdmedia.se\", \"placeholders\" :{ \"name\": \"Jane\"}}","type":"text"},{"key":"to","value":"{ \"to\": \"tom.smith@vhdmedia.se\", \"placeholders\" :{ \"name\": \"Tom\"}}","type":"text"},{"key":"cc","value":"tom.smith@vhdmedia.se","type":"text","disabled":true},{"key":"replyTo","value":"contact@vhdmedia.se","type":"text"},{"key":"html","value":"<h1>Html body</h1><p>Rich HTML message body.</p>","type":"text","disabled":true},{"key":"attachment","type":"file","src":"/Users/johnpaulbabu/Desktop/sample.m4a"},{"key":"bulkId","value":"customBulkId1","type":"text"},{"key":"intermediateReport","value":"true","type":"text"},{"key":"defaultPlaceholders","value":"{\"ph1\": \"Success\"}","type":"text"},{"key":"notifyUrl","value":"https://www.example.com/email/advanced","type":"text","disabled":true},{"key":"notifyContentType","value":"\"application/json\"","type":"text"},{"key":"callbackData","value":"DLR callback data","type":"text"},{"key":"subject","value":"Hello World","type":"text"},{"key":"text","value":"Dear {{name}}, this is mail body text with placeholder in body {{ph1}}","type":"text"}]},"url":"https://go2.vhdmedia.se/email/3/send"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Date","value":"Wed, 19 Apr 2023 08:51:28 GMT"},{"key":"Content-Type","value":"application/json;charset=utf-8"},{"key":"Server","value":"SMS API"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"X-Request-Id","value":"1681894288478348838"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"bulkId\": \"customBulkId1\",\n    \"messages\": [\n        {\n            \"to\": \"tom.smith@vhdmedia.se\",\n            \"messageId\": \"78mz86sf6p4ktg1xnyxf\",\n            \"status\": {\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 26,\n                \"name\": \"PENDING_ACCEPTED\",\n                \"description\": \"Message accepted, pending for delivery.\"\n            }\n        },\n        {\n            \"to\": \"jane.smith@vhdmedia.se\",\n            \"messageId\": \"43bsnicpxv1n4m94nrz1\",\n            \"status\": {\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 26,\n                \"name\": \"PENDING_ACCEPTED\",\n                \"description\": \"Message accepted, pending for delivery.\"\n            }\n        }\n    ]\n}"},{"id":"92e335f8-8c36-48ae-b595-fc1ef3a400b4","name":"Schedule Email","originalRequest":{"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"key":"from","value":"example@vhdmedia.se","type":"text"},{"key":"to","value":"jane.smith@vhdmedia.se","type":"text","disabled":true},{"key":"to","value":"{ \"to\": \"jane.smith@vhdmedia.se\", \"placeholders\" :{ \"name\": \"Jane\"}}","type":"text"},{"key":"to","value":"{ \"to\": \"tom.smith@vhdmedia.se\", \"placeholders\" :{ \"name\": \"Tom\"}}","type":"text","disabled":true},{"key":"cc","value":"tom.smith@vhdmedia.se","type":"text","disabled":true},{"key":"replyTo","value":"contact@vhdmedia.se","type":"text"},{"key":"html","value":"<h1>Html body</h1><p>Rich HTML message body.</p>","type":"text","disabled":true},{"key":"attachment","type":"file","src":"/Users/johnpaulbabu/Desktop/sample.m4a"},{"key":"bulkId","value":"customBulkId1","type":"text"},{"key":"intermediateReport","value":"true","type":"text"},{"key":"defaultPlaceholders","value":"{\"ph1\": \"Success\"}","type":"text"},{"key":"notifyUrl","value":"https://www.example.com/email/advanced","type":"text","disabled":true},{"key":"notifyContentType","value":"\"application/json\"","type":"text"},{"key":"callbackData","value":"DLR callback data","type":"text"},{"key":"subject","value":"Hello World","type":"text"},{"key":"text","value":"Dear {{name}}, this is mail body text with placeholder in body {{ph1}}","type":"text"},{"key":"sendAt","value":"2023-05-04T16:00:00.085-00:00","type":"text"}]},"url":"https://go2.vhdmedia.se/email/3/send"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"vary","value":"Origin"},{"key":"vary","value":"Access-Control-Request-Method"},{"key":"vary","value":"Access-Control-Request-Headers"},{"key":"date","value":"Thu, 04 May 2023 14:51:52 GMT"},{"key":"content-type","value":"application/json;charset=utf-8"},{"key":"server","value":"SMS API"},{"key":"transfer-encoding","value":"chunked"},{"key":"x-request-id","value":"1683211912739998666"},{"key":"strict-transport-security","value":"max-age=31536000; includeSubDomains; preload;"},{"key":"connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"bulkId\": \"customBulkId1\",\n    \"messages\": [\n        {\n            \"to\": \"jane.smith@vhdmedia.se\",\n            \"messageId\": \"qqukgp6o5raxmqhqy2u3\",\n            \"status\": {\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 26,\n                \"name\": \"PENDING_ACCEPTED\",\n                \"description\": \"Message accepted, pending for delivery.\"\n            }\n        }\n    ]\n}"},{"id":"fe255766-634f-42b7-a914-9143351a3ea9","name":"Email template","originalRequest":{"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"key":"from","value":"example@vhdmedia.eu","type":"text"},{"key":"to","value":"jane.smith@vhdmedia.se","type":"text"},{"key":"to","value":"{ \"to\": \"jane.smith@vhdmedia.se\", \"placeholders\" :{ \"name\": \"Jane\"}}","type":"text","disabled":true},{"key":"to","value":"{ \"to\": \"tom.smith@vhdmedia.se\", \"placeholders\" :{ \"name\": \"Tom\"}}","type":"text","disabled":true},{"key":"subject","value":"Sneakers","type":"text"},{"key":"templateId","value":"200000000034913","type":"text"},{"key":"intermediateReport","value":"true","type":"text"},{"key":"notifyContentType","value":"\"application/json\"","type":"text"},{"key":"callbackData","value":"DLR callback data","type":"text"},{"key":"bulkId","value":"customBulkId1","type":"text"}]},"url":"https://go2.vhdmedia.se/email/3/send"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"vary","value":"Origin"},{"key":"vary","value":"Access-Control-Request-Method"},{"key":"vary","value":"Access-Control-Request-Headers"},{"key":"date","value":"Sun, 03 Dec 2023 15:13:13 GMT"},{"key":"content-type","value":"application/json;charset=utf-8"},{"key":"server","value":"SMS API"},{"key":"transfer-encoding","value":"chunked"},{"key":"x-request-id","value":"1701616393540777838"},{"key":"strict-transport-security","value":"max-age=31536000; includeSubDomains; preload;"},{"key":"connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"bulkId\": \"customBulkId1\",\n    \"messages\": [\n        {\n            \"to\": \"fredrik@vhdmedia.se\",\n            \"messageId\": \"hp421btu9lmxhi61osgn\",\n            \"status\": {\n                \"groupId\": 1,\n                \"groupName\": \"PENDING\",\n                \"id\": 26,\n                \"name\": \"PENDING_ACCEPTED\",\n                \"description\": \"Message accepted, pending for delivery.\"\n            }\n        }\n    ]\n}"}],"_postman_id":"14eaa0bf-924e-4bbc-9e06-2abc9cddb079"}],"id":"a2c527cc-4a28-46f6-8144-97333dec6197","description":"<p>Send emails with text, HTML, templates, attachments and placeholders. Use <strong>Send email messages (API v4)</strong> for new integrations. The v3 request is kept for existing ones.</p>\n","_postman_id":"a2c527cc-4a28-46f6-8144-97333dec6197"},{"name":"LOGS AND REPORTS","item":[{"name":"Email delivery reports (API v4, latest)","event":[{"listen":"test","script":{"exec":["// Tests for Email delivery reports (API v4).","pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var res;","pm.test(\"Response body is valid JSON\", function () { res = pm.response.json(); });","","var reports = [];","pm.test(\"Response contains the reports array\", function () {","    pm.expect(res.results || res.emailResults, \"results (or emailResults) array\").to.be.an('array');","    reports = res.results || res.emailResults;","});","","pm.test(\"Each report has the documented fields\", function () {","    reports.forEach(function (r) {","        ['bulkId', 'messageId', 'to', 'sender', 'sentAt', 'doneAt', 'messageCount', 'status'].forEach(function (k) {","            pm.expect(r, 'missing field ' + k).to.have.property(k);","        });","        pm.expect(r.status.groupName).to.be.oneOf(['ACCEPTED', 'PENDING', 'UNDELIVERABLE', 'DELIVERED', 'EXPIRED', 'REJECTED']);","        if (r.error) {","            pm.expect(r.error.groupName).to.be.oneOf(['OK', 'HANDSET_ERRORS', 'USER_ERRORS', 'OPERATOR_ERRORS']);","        }","    });","});",""],"type":"text/javascript","packages":{}}}],"id":"d6dc46aa-efe4-4506-b045-8f83a96b2f67","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/email/4/reports","description":"<p>Get delivery reports for sent emails when you cannot receive them in real time on your own server. This is the current version of the email delivery reports API.</p>\n<blockquote>\n<p><strong>Each report is returned only once.</strong> A report you have already fetched is not returned again; if a message status changes later, the next request returns a new report for the updated status. Running this request consumes the reports it returns. Reports from the last 48 hours are available.</p>\n</blockquote>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<p>All parameters are optional.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the request.</td>\n</tr>\n<tr>\n<td><em>messageId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the message sent.</td>\n</tr>\n<tr>\n<td><em>limit</em></td>\n<td>Int</td>\n<td>Maximum number of delivery reports to be returned. If not set, the latest 50 records are returned. Maximum limit value is 1000 and you can only access reports for the last 48h.</td>\n</tr>\n<tr>\n<td><em>entityId</em></td>\n<td>String</td>\n<td>Entity id used to send the message. For more details, see our documentation.</td>\n</tr>\n<tr>\n<td><em>applicationId</em></td>\n<td>String</td>\n<td>Application id used to send the message. For more details, see our documentation.</td>\n</tr>\n<tr>\n<td><em>campaignReferenceId</em></td>\n<td>String</td>\n<td>ID of a campaign that was sent in the message.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>. The reports are in the <code>results</code> array, one per message. For compatibility the same reports can also be returned in <code>emailResults</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> Collection of email delivery reports, one per every message.</td>\n</tr>\n<tr>\n<td><em>results[].bulkId</em></td>\n<td>String</td>\n<td>Unique ID assigned to the request if messaging multiple recipients or sending multiple messages via a single API request.</td>\n</tr>\n<tr>\n<td><em>results[].price</em></td>\n<td>Object</td>\n<td>Sent message price.</td>\n</tr>\n<tr>\n<td><em>results[].price.pricePerMessage</em></td>\n<td>Number</td>\n<td>Price per one message.</td>\n</tr>\n<tr>\n<td><em>results[].price.currency</em></td>\n<td>String</td>\n<td>The currency in which the price is expressed.</td>\n</tr>\n<tr>\n<td><em>results[].status</em></td>\n<td>Object</td>\n<td>Indicates the status of the message and how to recover from an error should there be any.</td>\n</tr>\n<tr>\n<td><em>results[].status.groupId</em></td>\n<td>Int</td>\n<td>Status group ID.</td>\n</tr>\n<tr>\n<td><em>results[].status.groupName</em></td>\n<td>String</td>\n<td>Status group name that describes which category the status code belongs to, i.e., PENDING, UNDELIVERABLE, DELIVERED, EXPIRED, REJECTED. One of: <code>ACCEPTED</code>, <code>PENDING</code>, <code>UNDELIVERABLE</code>, <code>DELIVERED</code>, <code>EXPIRED</code>, <code>REJECTED</code>.</td>\n</tr>\n<tr>\n<td><em>results[].status.id</em></td>\n<td>Int</td>\n<td>Status code ID.</td>\n</tr>\n<tr>\n<td><em>results[].status.name</em></td>\n<td>String</td>\n<td>Status code name.</td>\n</tr>\n<tr>\n<td><em>results[].status.description</em></td>\n<td>String</td>\n<td>Human-readable description of the status.</td>\n</tr>\n<tr>\n<td><em>results[].status.action</em></td>\n<td>String</td>\n<td>Action to take to recover from the error.</td>\n</tr>\n<tr>\n<td><em>results[].error</em></td>\n<td>Object</td>\n<td>Indicates whether an error occurred during the query execution.</td>\n</tr>\n<tr>\n<td><em>results[].error.groupId</em></td>\n<td>Int</td>\n<td>Error group ID.</td>\n</tr>\n<tr>\n<td><em>results[].error.groupName</em></td>\n<td>String</td>\n<td>Error group name that describes which category the error code belongs to. One of: <code>OK</code>, <code>HANDSET_ERRORS</code>, <code>USER_ERRORS</code>, <code>OPERATOR_ERRORS</code>.</td>\n</tr>\n<tr>\n<td><em>results[].error.id</em></td>\n<td>Int</td>\n<td>Error ID.</td>\n</tr>\n<tr>\n<td><em>results[].error.name</em></td>\n<td>String</td>\n<td>Error name.</td>\n</tr>\n<tr>\n<td><em>results[].error.description</em></td>\n<td>String</td>\n<td>Human-readable description of the error.</td>\n</tr>\n<tr>\n<td><em>results[].error.permanent</em></td>\n<td>Boolean</td>\n<td>Indicates whether the error is recoverable or not.</td>\n</tr>\n<tr>\n<td><em>results[].messageId</em></td>\n<td>String</td>\n<td>Unique message ID.</td>\n</tr>\n<tr>\n<td><em>results[].to</em></td>\n<td>String</td>\n<td>Message destination address.</td>\n</tr>\n<tr>\n<td><em>results[].sender</em></td>\n<td>String</td>\n<td>The sender ID which can be alphanumeric or numeric (e.g., <code>CompanyName</code>).</td>\n</tr>\n<tr>\n<td><em>results[].sentAt</em></td>\n<td>String</td>\n<td>Date and time when the message was sent. Has the following format: yyyy-MM-dd'T'HH:mm:ss.SSSZ.</td>\n</tr>\n<tr>\n<td><em>results[].doneAt</em></td>\n<td>String</td>\n<td>Date and time when the VHD services finished processing the message (i.e., delivered to the destination, network, etc.). Has the following format: yyyy-MM-dd'T'HH:mm:ss.SSSZ.</td>\n</tr>\n<tr>\n<td><em>results[].messageCount</em></td>\n<td>Int</td>\n<td>The number of sent messages.</td>\n</tr>\n<tr>\n<td><em>results[].callbackData</em></td>\n<td>String</td>\n<td>Callback data sent through ‛callbackData‛ field when sending message.</td>\n</tr>\n<tr>\n<td><em>results[].platform</em></td>\n<td>Object</td>\n<td>Platform options. For more details, see documentation.</td>\n</tr>\n<tr>\n<td><em>results[].platform.entityId</em></td>\n<td>String</td>\n<td>Used when specifying an entity in outbound send requests. It is also returned in notification events. For detailed usage, refer to the documentation.</td>\n</tr>\n<tr>\n<td><em>results[].platform.applicationId</em></td>\n<td>String</td>\n<td>Used when specifying an application in outbound send requests. It is also returned in notification events. For detailed usage, refer to the documentation.</td>\n</tr>\n<tr>\n<td><em>results[].campaignReferenceId</em></td>\n<td>String</td>\n<td>ID of a campaign that was sent in the message.</td>\n</tr>\n<tr>\n<td><em>results[].attemptCount</em></td>\n<td>Int</td>\n<td>Number of times delivery was attempted for the email.</td>\n</tr>\n<tr>\n<td><em>results[].timeToFirstAttempt</em></td>\n<td>Int</td>\n<td>This is the time in milliseconds between accepting the request and making the first delivery attempt to the destination.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Errors use the common format: <code>errorCode</code>, <code>description</code>, <code>action</code>, <code>violations[]</code>. Status codes: <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["email","4","reports"],"host":["go2","vhdmedia","se"],"query":[{"disabled":true,"description":{"content":"<p>The ID that uniquely identifies the request.</p>\n","type":"text/plain"},"key":"bulkId","value":""},{"disabled":true,"description":{"content":"<p>The ID that uniquely identifies the message sent.</p>\n","type":"text/plain"},"key":"messageId","value":""},{"disabled":true,"description":{"content":"<p>Maximum number of delivery reports to be returned. If not set, the latest 50 records are returned. Maximum limit value is 1000 and you can only access reports for the last 48h.</p>\n","type":"text/plain"},"key":"limit","value":"50"},{"disabled":true,"description":{"content":"<p>Entity id used to send the message. For more details, see our documentation.</p>\n","type":"text/plain"},"key":"entityId","value":""},{"disabled":true,"description":{"content":"<p>Application id used to send the message. For more details, see our documentation.</p>\n","type":"text/plain"},"key":"applicationId","value":""},{"disabled":true,"description":{"content":"<p>ID of a campaign that was sent in the message.</p>\n","type":"text/plain"},"key":"campaignReferenceId","value":""}],"variable":[]}},"response":[{"id":"342d411f-9bc2-452e-90ef-87fb8292f5e7","name":"Email delivery reports","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/email/4/reports","protocol":"https","host":["go2","vhdmedia","se"],"path":["email","4","reports"],"query":[{"key":"bulkId","value":"","description":"The ID that uniquely identifies the request.","disabled":true},{"key":"messageId","value":"","description":"The ID that uniquely identifies the message sent.","disabled":true},{"key":"limit","value":"50","description":"Maximum number of delivery reports to be returned. If not set, the latest 50 records are returned. Maximum limit value is 1000 and you can only access reports for the last 48h.","disabled":true},{"key":"entityId","value":"","description":"Entity id used to send the message. For more details, see our documentation.","disabled":true},{"key":"applicationId","value":"","description":"Application id used to send the message. For more details, see our documentation.","disabled":true},{"key":"campaignReferenceId","value":"","description":"ID of a campaign that was sent in the message.","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"results\": [\n    {\n      \"bulkId\": \"x7kferxomzc2nlihlouz\",\n      \"price\": {\n        \"pricePerMessage\": 0.0001,\n        \"currency\": \"EUR\"\n      },\n      \"status\": {\n        \"groupId\": 3,\n        \"groupName\": \"DELIVERED\",\n        \"id\": 5,\n        \"name\": \"DELIVERED_TO_HANDSET\",\n        \"description\": \"Message delivered to handset\"\n      },\n      \"error\": {\n        \"groupId\": 0,\n        \"groupName\": \"OK\",\n        \"id\": 0,\n        \"name\": \"NO_ERROR\",\n        \"description\": \"No Error\",\n        \"permanent\": false\n      },\n      \"messageId\": \"claxbdvqvssvnc12hypo\",\n      \"to\": \"jane.smith@vhdmedia.se\",\n      \"sender\": \"example@vhdmedia.eu\",\n      \"sentAt\": \"2026-10-18T09:00:00.000+0000\",\n      \"doneAt\": \"2026-10-18T09:00:05.000+0000\",\n      \"messageCount\": 1,\n      \"callbackData\": \"DLR callback data\",\n      \"platform\": {\n        \"applicationId\": \"default\"\n      },\n      \"campaignReferenceId\": \"my-campaign\",\n      \"attemptCount\": 1,\n      \"timeToFirstAttempt\": 1200\n    }\n  ]\n}"},{"id":"94862aa4-ec0f-4dd8-8e69-6d77eb0295a8","name":"Unauthorized - invalid API key","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/email/4/reports","protocol":"https","host":["go2","vhdmedia","se"],"path":["email","4","reports"],"query":[{"key":"bulkId","value":"","description":"The ID that uniquely identifies the request.","disabled":true},{"key":"messageId","value":"","description":"The ID that uniquely identifies the message sent.","disabled":true},{"key":"limit","value":"50","description":"Maximum number of delivery reports to be returned. If not set, the latest 50 records are returned. Maximum limit value is 1000 and you can only access reports for the last 48h.","disabled":true},{"key":"entityId","value":"","description":"Entity id used to send the message. For more details, see our documentation.","disabled":true},{"key":"applicationId","value":"","description":"Application id used to send the message. For more details, see our documentation.","disabled":true},{"key":"campaignReferenceId","value":"","description":"ID of a campaign that was sent in the message.","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E401\",\n  \"description\": \"The request lacks valid authentication credentials for the requested resource.\",\n  \"action\": \"Check the resources and adjust authentication credentials.\",\n  \"violations\": [],\n  \"resources\": []\n}"}],"_postman_id":"d6dc46aa-efe4-4506-b045-8f83a96b2f67"},{"name":"Email message logs (API v4, latest)","event":[{"listen":"test","script":{"exec":["// Tests for Email message logs (API v4).","pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var res;","pm.test(\"Response body is valid JSON\", function () { res = pm.response.json(); });","","pm.test(\"Response contains 'results' array\", function () {","    pm.expect(res).to.have.property('results').that.is.an('array');","});","","pm.test(\"Each log entry has the documented fields\", function () {","    res.results.forEach(function (r) {","        ['sender', 'destination', 'bulkId', 'messageId', 'sentAt', 'messageCount', 'status'].forEach(function (k) {","            pm.expect(r, 'missing field ' + k).to.have.property(k);","        });","        pm.expect(r.status).to.include.all.keys('groupId', 'groupName', 'id', 'name', 'description');","        pm.expect(r.status.groupName).to.be.oneOf(['ACCEPTED', 'PENDING', 'UNDELIVERABLE', 'DELIVERED', 'EXPIRED', 'REJECTED']);","    });","});",""],"type":"text/javascript","packages":{}}}],"id":"fe9c1c12-daaf-4ad3-a30e-552efb6a9328","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/email/4/logs","description":"<p>Get logs of sent emails, for example to show them in a user interface. This is the current version of the email logs API. Logs from the last 48 hours are available.</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<p>All parameters are optional.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>sender</em></td>\n<td>String</td>\n<td>The sender ID which can be alphanumeric or numeric.</td>\n</tr>\n<tr>\n<td><em>destination</em></td>\n<td>String</td>\n<td>Message destination address.</td>\n</tr>\n<tr>\n<td><em>bulkId</em></td>\n<td>Array</td>\n<td>Unique ID assigned to the request if messaging multiple recipients or sending multiple messages via a single API request. May contain multiple comma-separated values. Maximum length 2048 characters.</td>\n</tr>\n<tr>\n<td><em>messageId</em></td>\n<td>Array</td>\n<td>Unique message ID for which a log is requested. May contain multiple comma-separated values. Maximum length 2048 characters.</td>\n</tr>\n<tr>\n<td><em>generalStatus</em></td>\n<td>String</td>\n<td>One of: <code>ACCEPTED</code>, <code>PENDING</code>, <code>UNDELIVERABLE</code>, <code>DELIVERED</code>, <code>EXPIRED</code>, <code>REJECTED</code>.</td>\n</tr>\n<tr>\n<td><em>sentSince</em></td>\n<td>String</td>\n<td>The logs will only include messages sent after this date. Use it alongside sentUntil to specify a time range for the logs, but only up to the maximum limit of 1000 logs per call. Has the following format: yyyy-MM-dd'T'HH:mm:ss.SSSZ.</td>\n</tr>\n<tr>\n<td><em>sentUntil</em></td>\n<td>String</td>\n<td>The logs will only include messages sent before this date. Use it alongside sentSince to specify a time range for the logs, but only up to the maximum limit of 1000 logs per call. Has the following format: yyyy-MM-dd'T'HH:mm:ss.SSSZ.</td>\n</tr>\n<tr>\n<td><em>limit</em></td>\n<td>Int</td>\n<td>Maximum number of messages to include in logs. If not set, the latest 50 records are returned. Maximum limit value is 1000 and you can only access logs for the last 48h.</td>\n</tr>\n<tr>\n<td><em>entityId</em></td>\n<td>String</td>\n<td>Entity id used to send the message. For more details, see our documentation.</td>\n</tr>\n<tr>\n<td><em>applicationId</em></td>\n<td>String</td>\n<td>Application id used to send the message. For more details, see our documentation.</td>\n</tr>\n<tr>\n<td><em>campaignReferenceId</em></td>\n<td>Array</td>\n<td>ID of a campaign that was sent in the message. May contain multiple comma-separated values.</td>\n</tr>\n<tr>\n<td><em>useCursor</em></td>\n<td>Boolean</td>\n<td>Flag used to enable cursor-based pagination. When set to true, the system will use the cursor to fetch the next set of logs.</td>\n</tr>\n<tr>\n<td><em>cursor</em></td>\n<td>String</td>\n<td>Value which represents the current position in the data set. For the first request, this field shouldn't be defined. In subsequent requests, use the <code>nextCursor</code> value returned from the previous response to continue fetching data.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results</em></td>\n<td>Array</td>\n<td>An array of message log results, one object per each message log entry.</td>\n</tr>\n<tr>\n<td><em>results[].text</em></td>\n<td>String</td>\n<td>Message text.</td>\n</tr>\n<tr>\n<td><em>results[].sender</em></td>\n<td>String</td>\n<td>The sender ID which can be alphanumeric or numeric.</td>\n</tr>\n<tr>\n<td><em>results[].destination</em></td>\n<td>String</td>\n<td>Message destination address.</td>\n</tr>\n<tr>\n<td><em>results[].bulkId</em></td>\n<td>String</td>\n<td>Unique ID assigned to the request if messaging multiple recipients or sending multiple messages via a single API request.</td>\n</tr>\n<tr>\n<td><em>results[].messageId</em></td>\n<td>String</td>\n<td>Unique message ID for which a log is requested.</td>\n</tr>\n<tr>\n<td><em>results[].sentAt</em></td>\n<td>String</td>\n<td>Date and time when the message was sent. Has the following format: yyyy-MM-dd'T'HH:mm:ss.SSSZ.</td>\n</tr>\n<tr>\n<td><em>results[].doneAt</em></td>\n<td>String</td>\n<td>Date and time when the VHD services finished processing the message (i.e., delivered to the destination, network, etc.). Has the following format: yyyy-MM-dd'T'HH:mm:ss.SSSZ.</td>\n</tr>\n<tr>\n<td><em>results[].messageCount</em></td>\n<td>Int</td>\n<td>The number of messages content was split to.</td>\n</tr>\n<tr>\n<td><em>results[].price</em></td>\n<td>Object</td>\n<td>Sent message price.</td>\n</tr>\n<tr>\n<td><em>results[].price.pricePerMessage</em></td>\n<td>Number</td>\n<td>Price per one message.</td>\n</tr>\n<tr>\n<td><em>results[].price.currency</em></td>\n<td>String</td>\n<td>The currency in which the price is expressed.</td>\n</tr>\n<tr>\n<td><em>results[].status</em></td>\n<td>Object</td>\n<td>Indicates the status of the message and how to recover from an error should there be any.</td>\n</tr>\n<tr>\n<td><em>results[].status.groupId</em></td>\n<td>Int</td>\n<td>Status group ID.</td>\n</tr>\n<tr>\n<td><em>results[].status.groupName</em></td>\n<td>String</td>\n<td>Status group name that describes which category the status code belongs to, i.e., PENDING, UNDELIVERABLE, DELIVERED, EXPIRED, REJECTED. One of: <code>ACCEPTED</code>, <code>PENDING</code>, <code>UNDELIVERABLE</code>, <code>DELIVERED</code>, <code>EXPIRED</code>, <code>REJECTED</code>.</td>\n</tr>\n<tr>\n<td><em>results[].status.id</em></td>\n<td>Int</td>\n<td>Status code ID.</td>\n</tr>\n<tr>\n<td><em>results[].status.name</em></td>\n<td>String</td>\n<td>Status code name.</td>\n</tr>\n<tr>\n<td><em>results[].status.description</em></td>\n<td>String</td>\n<td>Human-readable description of the status.</td>\n</tr>\n<tr>\n<td><em>results[].status.action</em></td>\n<td>String</td>\n<td>Action to take to recover from the error.</td>\n</tr>\n<tr>\n<td><em>results[].error</em></td>\n<td>Object</td>\n<td>Indicates whether an error occurred during the query execution.</td>\n</tr>\n<tr>\n<td><em>results[].error.groupId</em></td>\n<td>Int</td>\n<td>Error group ID.</td>\n</tr>\n<tr>\n<td><em>results[].error.groupName</em></td>\n<td>String</td>\n<td>Error group name that describes which category the error code belongs to. One of: <code>OK</code>, <code>HANDSET_ERRORS</code>, <code>USER_ERRORS</code>, <code>OPERATOR_ERRORS</code>.</td>\n</tr>\n<tr>\n<td><em>results[].error.id</em></td>\n<td>Int</td>\n<td>Error ID.</td>\n</tr>\n<tr>\n<td><em>results[].error.name</em></td>\n<td>String</td>\n<td>Error name.</td>\n</tr>\n<tr>\n<td><em>results[].error.description</em></td>\n<td>String</td>\n<td>Human-readable description of the error.</td>\n</tr>\n<tr>\n<td><em>results[].error.permanent</em></td>\n<td>Boolean</td>\n<td>Indicates whether the error is recoverable or not.</td>\n</tr>\n<tr>\n<td><em>results[].platform</em></td>\n<td>Object</td>\n<td>Platform options. For more details, see documentation.</td>\n</tr>\n<tr>\n<td><em>results[].platform.entityId</em></td>\n<td>String</td>\n<td>Used when specifying an entity in outbound send requests. It is also returned in notification events. For detailed usage, refer to the documentation.</td>\n</tr>\n<tr>\n<td><em>results[].platform.applicationId</em></td>\n<td>String</td>\n<td>Used when specifying an application in outbound send requests. It is also returned in notification events. For detailed usage, refer to the documentation.</td>\n</tr>\n<tr>\n<td><em>results[].campaignReferenceId</em></td>\n<td>String</td>\n<td>ID of a campaign that was sent in the message.</td>\n</tr>\n<tr>\n<td><em>cursor</em></td>\n<td>Object</td>\n<td>Cursor information.</td>\n</tr>\n<tr>\n<td><em>cursor.limit</em></td>\n<td>Int</td>\n<td>Requested limit.</td>\n</tr>\n<tr>\n<td><em>cursor.nextCursor</em></td>\n<td>String</td>\n<td>The <code>cursor</code> value you will use in your next request to fetch the subsequent set of results.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Errors use the common format: <code>errorCode</code>, <code>description</code>, <code>action</code>, <code>violations[]</code>. Status codes: <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["email","4","logs"],"host":["go2","vhdmedia","se"],"query":[{"disabled":true,"description":{"content":"<p>The sender ID which can be alphanumeric or numeric.</p>\n","type":"text/plain"},"key":"sender","value":""},{"disabled":true,"description":{"content":"<p>Message destination address.</p>\n","type":"text/plain"},"key":"destination","value":""},{"disabled":true,"description":{"content":"<p>Unique ID assigned to the request if messaging multiple recipients or sending multiple messages via a single API request. May contain multiple comma-separated values. Maximum length 2048 characters.</p>\n","type":"text/plain"},"key":"bulkId","value":""},{"disabled":true,"description":{"content":"<p>Unique message ID for which a log is requested. May contain multiple comma-separated values. Maximum length 2048 characters.</p>\n","type":"text/plain"},"key":"messageId","value":""},{"disabled":true,"description":{"content":"<p>generalStatus</p>\n","type":"text/plain"},"key":"generalStatus","value":"DELIVERED"},{"disabled":true,"description":{"content":"<p>The logs will only include messages sent after this date. Use it alongside sentUntil to specify a time range for the logs, but only up to the maximum limit of 1000 logs per call. Has the following format: yyyy-MM-dd'T'HH:mm:ss.SSSZ.</p>\n","type":"text/plain"},"key":"sentSince","value":""},{"disabled":true,"description":{"content":"<p>The logs will only include messages sent before this date. Use it alongside sentSince to specify a time range for the logs, but only up to the maximum limit of 1000 logs per call. Has the following format: yyyy-MM-dd'T'HH:mm:ss.SSSZ.</p>\n","type":"text/plain"},"key":"sentUntil","value":""},{"disabled":true,"description":{"content":"<p>Maximum number of messages to include in logs. If not set, the latest 50 records are returned. Maximum limit value is 1000 and you can only access logs for the last 48h.</p>\n","type":"text/plain"},"key":"limit","value":"50"},{"disabled":true,"description":{"content":"<p>Entity id used to send the message. For more details, see our documentation.</p>\n","type":"text/plain"},"key":"entityId","value":""},{"disabled":true,"description":{"content":"<p>Application id used to send the message. For more details, see our documentation.</p>\n","type":"text/plain"},"key":"applicationId","value":""},{"disabled":true,"description":{"content":"<p>ID of a campaign that was sent in the message. May contain multiple comma-separated values.</p>\n","type":"text/plain"},"key":"campaignReferenceId","value":""},{"disabled":true,"description":{"content":"<p>Flag used to enable cursor-based pagination. When set to true, the system will use the cursor to fetch the next set of logs.</p>\n","type":"text/plain"},"key":"useCursor","value":"true"},{"disabled":true,"description":{"content":"<p>Value which represents the current position in the data set. For the first request, this field shouldn't be defined. In subsequent requests, use the <code>nextCursor</code> value returned from the previous response to continue fetching data.</p>\n","type":"text/plain"},"key":"cursor","value":""}],"variable":[]}},"response":[{"id":"97b55ba5-db7f-4b15-9391-911c60d7ce52","name":"Email message logs","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/email/4/logs","protocol":"https","host":["go2","vhdmedia","se"],"path":["email","4","logs"],"query":[{"key":"sender","value":"","description":"The sender ID which can be alphanumeric or numeric.","disabled":true},{"key":"destination","value":"","description":"Message destination address.","disabled":true},{"key":"bulkId","value":"","description":"Unique ID assigned to the request if messaging multiple recipients or sending multiple messages via a single API request. May contain multiple comma-separated values. Maximum length 2048 characters.","disabled":true},{"key":"messageId","value":"","description":"Unique message ID for which a log is requested. May contain multiple comma-separated values. Maximum length 2048 characters.","disabled":true},{"key":"generalStatus","value":"DELIVERED","description":"generalStatus","disabled":true},{"key":"sentSince","value":"","description":"The logs will only include messages sent after this date. Use it alongside sentUntil to specify a time range for the logs, but only up to the maximum limit of 1000 logs per call. Has the following format: yyyy-MM-dd'T'HH:mm:ss.SSSZ.","disabled":true},{"key":"sentUntil","value":"","description":"The logs will only include messages sent before this date. Use it alongside sentSince to specify a time range for the logs, but only up to the maximum limit of 1000 logs per call. Has the following format: yyyy-MM-dd'T'HH:mm:ss.SSSZ.","disabled":true},{"key":"limit","value":"50","description":"Maximum number of messages to include in logs. If not set, the latest 50 records are returned. Maximum limit value is 1000 and you can only access logs for the last 48h.","disabled":true},{"key":"entityId","value":"","description":"Entity id used to send the message. For more details, see our documentation.","disabled":true},{"key":"applicationId","value":"","description":"Application id used to send the message. For more details, see our documentation.","disabled":true},{"key":"campaignReferenceId","value":"","description":"ID of a campaign that was sent in the message. May contain multiple comma-separated values.","disabled":true},{"key":"useCursor","value":"true","description":"Flag used to enable cursor-based pagination. When set to true, the system will use the cursor to fetch the next set of logs.","disabled":true},{"key":"cursor","value":"","description":"Value which represents the current position in the data set. For the first request, this field shouldn't be defined. In subsequent requests, use the `nextCursor` value returned from the previous response to continue fetching data.","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"results\": [\n    {\n      \"text\": \"Dear Jane, this is a test email from the VHD API.\",\n      \"sender\": \"example@vhdmedia.eu\",\n      \"destination\": \"jane.smith@vhdmedia.se\",\n      \"bulkId\": \"x7kferxomzc2nlihlouz\",\n      \"messageId\": \"claxbdvqvssvnc12hypo\",\n      \"sentAt\": \"2026-10-18T09:00:00.000+0000\",\n      \"doneAt\": \"2026-10-18T09:00:05.000+0000\",\n      \"messageCount\": 1,\n      \"price\": {\n        \"pricePerMessage\": 0.0001,\n        \"currency\": \"EUR\"\n      },\n      \"status\": {\n        \"groupId\": 3,\n        \"groupName\": \"DELIVERED\",\n        \"id\": 5,\n        \"name\": \"DELIVERED_TO_HANDSET\",\n        \"description\": \"Message delivered to handset\"\n      },\n      \"error\": {\n        \"groupId\": 0,\n        \"groupName\": \"OK\",\n        \"id\": 0,\n        \"name\": \"NO_ERROR\",\n        \"description\": \"No Error\",\n        \"permanent\": false\n      },\n      \"platform\": {\n        \"applicationId\": \"default\"\n      },\n      \"campaignReferenceId\": \"my-campaign\"\n    }\n  ]\n}"},{"id":"18061e79-e73d-402b-abe4-f9ca0b3229eb","name":"Unauthorized - invalid API key","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/email/4/logs","protocol":"https","host":["go2","vhdmedia","se"],"path":["email","4","logs"],"query":[{"key":"sender","value":"","description":"The sender ID which can be alphanumeric or numeric.","disabled":true},{"key":"destination","value":"","description":"Message destination address.","disabled":true},{"key":"bulkId","value":"","description":"Unique ID assigned to the request if messaging multiple recipients or sending multiple messages via a single API request. May contain multiple comma-separated values. Maximum length 2048 characters.","disabled":true},{"key":"messageId","value":"","description":"Unique message ID for which a log is requested. May contain multiple comma-separated values. Maximum length 2048 characters.","disabled":true},{"key":"generalStatus","value":"DELIVERED","description":"generalStatus","disabled":true},{"key":"sentSince","value":"","description":"The logs will only include messages sent after this date. Use it alongside sentUntil to specify a time range for the logs, but only up to the maximum limit of 1000 logs per call. Has the following format: yyyy-MM-dd'T'HH:mm:ss.SSSZ.","disabled":true},{"key":"sentUntil","value":"","description":"The logs will only include messages sent before this date. Use it alongside sentSince to specify a time range for the logs, but only up to the maximum limit of 1000 logs per call. Has the following format: yyyy-MM-dd'T'HH:mm:ss.SSSZ.","disabled":true},{"key":"limit","value":"50","description":"Maximum number of messages to include in logs. If not set, the latest 50 records are returned. Maximum limit value is 1000 and you can only access logs for the last 48h.","disabled":true},{"key":"entityId","value":"","description":"Entity id used to send the message. For more details, see our documentation.","disabled":true},{"key":"applicationId","value":"","description":"Application id used to send the message. For more details, see our documentation.","disabled":true},{"key":"campaignReferenceId","value":"","description":"ID of a campaign that was sent in the message. May contain multiple comma-separated values.","disabled":true},{"key":"useCursor","value":"true","description":"Flag used to enable cursor-based pagination. When set to true, the system will use the cursor to fetch the next set of logs.","disabled":true},{"key":"cursor","value":"","description":"Value which represents the current position in the data set. For the first request, this field shouldn't be defined. In subsequent requests, use the `nextCursor` value returned from the previous response to continue fetching data.","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E401\",\n  \"description\": \"The request lacks valid authentication credentials for the requested resource.\",\n  \"action\": \"Check the resources and adjust authentication credentials.\",\n  \"violations\": [],\n  \"resources\": []\n}"}],"_postman_id":"fe9c1c12-daaf-4ad3-a30e-552efb6a9328"},{"name":"Email delivery reports (API v1)","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"results\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","","pm.test(\"'results' is an array\", function () {","    pm.expect(responseBody[\"results\"]).to.be.an('array');","});"],"type":"text/javascript","packages":{}}}],"id":"1c107353-9c45-411c-b888-d0915034caad","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[],"body":{"mode":"raw","raw":"{\n    \"bulkId\": \"customBulkId1\",\n    \"messageId\": \"n48fjq86ugsccm4pzjxr\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/email/1/reports","description":"<blockquote>\n<p><strong>Previous version (v1).</strong> New integrations should use <strong>Email delivery reports (API v4)</strong> (<code>GET /email/4/reports</code>). This request still works.</p>\n</blockquote>\n<p>REQUEST RATE LIMIT:</p>\n<p>1000 requests / second (per account)</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>Bulk ID for which report is requested.</td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>String</td>\n<td>The ID that uniquely identifies the sent email</td>\n</tr>\n<tr>\n<td>limit</td>\n<td>Integer</td>\n<td>Maximum number of reports</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success, response header HTTP status code will be <code>200 OK</code> and delivery reports will be returned in the response body.</p>\n<p>If you try to send a message without authorization, you will get a response with HTTP status code <code>401 Unauthorized</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results</em></td>\n<td>SentEmailReport</td>\n<td>Collection of reports, one per e-mail.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"sentemailreport\">SentEmailReport</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>messageId</em></td>\n<td>String</td>\n<td>Message ID.</td>\n</tr>\n<tr>\n<td><em>to</em></td>\n<td>String</td>\n<td>Destination address.</td>\n</tr>\n<tr>\n<td><em>sentAt</em></td>\n<td>Date</td>\n<td>Tells when the e-mail was sent. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSSZ</code>.</td>\n</tr>\n<tr>\n<td><em>doneAt</em></td>\n<td>Date</td>\n<td>Tells when the e-mail was finished processing by us(ie. delivered to destination)</td>\n</tr>\n<tr>\n<td><em>messageCount</em></td>\n<td>Int</td>\n<td>How many parts the message was split into. Always will be 1 for e-mail.</td>\n</tr>\n<tr>\n<td><em>price</em></td>\n<td>Price</td>\n<td>Sent e-mail price.</td>\n</tr>\n<tr>\n<td><em>status</em></td>\n<td>Status</td>\n<td>Indicates whether the message is successfully sent, not sent, delivered, not delivered, waiting for delivery or any other possible status.</td>\n</tr>\n<tr>\n<td><em>error</em></td>\n<td>Error</td>\n<td>Indicates whether any error occurred during query execution.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"price\">Price</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>pricePerMessage</em></td>\n<td>BigDecimal</td>\n<td>Price per one Email.</td>\n</tr>\n<tr>\n<td><em>currency</em></td>\n<td>String</td>\n<td>The currency in which the price is expressed.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"status\">Status</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>groupId</em></td>\n<td>Int</td>\n<td>Status group ID</td>\n</tr>\n<tr>\n<td><em>groupName</em></td>\n<td>String</td>\n<td>Status group name.</td>\n</tr>\n<tr>\n<td><em>id</em></td>\n<td>Int</td>\n<td>Status ID</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>Status name.</td>\n</tr>\n<tr>\n<td><em>description</em></td>\n<td>String</td>\n<td>Human readable description of the status.</td>\n</tr>\n<tr>\n<td><em>action</em></td>\n<td>String</td>\n<td>Action that should be taken to eliminate the error.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"error\">Error</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>groupId</em></td>\n<td>Int</td>\n<td>Error group ID</td>\n</tr>\n<tr>\n<td><em>groupName</em></td>\n<td>String</td>\n<td>Error group name</td>\n</tr>\n<tr>\n<td><em>id</em></td>\n<td>Int</td>\n<td>Error ID</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>Error name</td>\n</tr>\n<tr>\n<td><em>description</em></td>\n<td>String</td>\n<td>Human-readable description of the error.</td>\n</tr>\n<tr>\n<td><em>permanent</em></td>\n<td>Boolean</td>\n<td>Tells if the error is permanent</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-query-parameters\">Additional query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>campaignReferenceId</em></td>\n<td>String</td>\n<td>The ID that allows you to track, analyze, and show an aggregated overview and the performance of individual campaigns.</td>\n</tr>\n<tr>\n<td><em>applicationId</em></td>\n<td>String</td>\n<td>Application identifier used for filtering.</td>\n</tr>\n<tr>\n<td><em>entityId</em></td>\n<td>String</td>\n<td>Entity identifier used for filtering.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-response-fields\">Additional response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results[].attemptCount</em></td>\n<td>Int</td>\n<td>Number of times delivery was attempted for the email.</td>\n</tr>\n<tr>\n<td><em>results[].timeToFirstAttempt</em></td>\n<td>Int</td>\n<td>This is the time in milliseconds between accepting the request and making the first delivery attempt to the destination.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["email","1","reports"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"18f021eb-a809-4ada-ae14-a353fef6488d","name":"Email delivery reports","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":"{\n    \"bulkId\": \"customBulkId1\",\n    \"messageId\": \"n48fjq86ugsccm4pzjxr\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/email/1/reports"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Date","value":"Mon, 27 Mar 2023 20:21:14 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Server","value":"SMS API"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"X-Request-Id","value":"1679948474212853255"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"results\": [\n        {\n            \"bulkId\": \"customBulkId1\",\n            \"messageId\": \"n48fjq86ugsccm4pzjxr\",\n            \"to\": \"tom.smith@vhdmedia.se\",\n            \"sentAt\": \"2023-03-27T09:53:22.388+0000\",\n            \"doneAt\": \"2023-03-27T09:53:22.782+0000\",\n            \"messageCount\": 1,\n            \"price\": {\n                \"pricePerMessage\": 0.00043,\n                \"currency\": \"EUR\"\n            },\n            \"status\": {\n                \"groupId\": 3,\n                \"groupName\": \"DELIVERED\",\n                \"id\": 5,\n                \"name\": \"DELIVERED_TO_HANDSET\",\n                \"description\": \"Message delivered to handset\"\n            },\n            \"error\": {\n                \"groupId\": 0,\n                \"groupName\": \"OK\",\n                \"id\": 0,\n                \"name\": \"NO_ERROR\",\n                \"description\": \"No Error\",\n                \"permanent\": false\n            },\n            \"channel\": \"EMAIL\"\n        }\n    ]\n}"}],"_postman_id":"1c107353-9c45-411c-b888-d0915034caad"},{"name":"Email messages logs (API v1)","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"results\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","","pm.test(\"'results' is an array\", function () {","    pm.expect(responseBody[\"results\"]).to.be.an('array');","});"],"type":"text/javascript","packages":{}}}],"id":"bef096b5-a361-4d65-bc82-6012a0745155","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[],"body":{"mode":"raw","raw":"{\"limit\":1 }"},"url":"https://go2.vhdmedia.se/email/1/logs","description":"<blockquote>\n<p><strong>Previous version (v1).</strong> New integrations should use <strong>Email message logs (API v4)</strong> (<code>GET /email/4/logs</code>). This request still works.</p>\n</blockquote>\n<p>REQUEST RATE LIMIT: 1000 requests/second (per account)</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>Bulk ID for which report is requested.</td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>String</td>\n<td>The ID that uniquely identifies the sent email</td>\n</tr>\n<tr>\n<td>limit</td>\n<td>Integer</td>\n<td>Maximum number of reports</td>\n</tr>\n<tr>\n<td>from</td>\n<td>String</td>\n<td>The recipient email address.</td>\n</tr>\n<tr>\n<td>to</td>\n<td>String</td>\n<td>The recipient email address.</td>\n</tr>\n<tr>\n<td>generalStatus</td>\n<td>String</td>\n<td>Bulk ID that uniquely identifies the request.</td>\n</tr>\n<tr>\n<td>sentSince</td>\n<td>String</td>\n<td>Tells when the email was initiated. Has the following format: yyyy-MM-dd'T'HH:mm:ss.SSSZ.</td>\n</tr>\n<tr>\n<td>sentUntil</td>\n<td>String</td>\n<td>Tells when the email was initiated. Has the following format: yyyy-MM-dd'T'HH:mm:ss.SSSZ.</td>\n</tr>\n<tr>\n<td>limit</td>\n<td>Integer</td>\n<td>Maximum number of logs</td>\n</tr>\n</tbody>\n</table>\n</div><p>None of the query parameters is mandatory for this request. For filtering results, any combination of parameters can be used. Some examples are shown below.</p>\n<h3 id=\"response-format\">Response format</h3>\n<p>If successful, the response header HTTP status code will be <code>200 OK</code> and the message logs will be returned.</p>\n<p>If you try to send a message without authorization, you will get a response with HTTP status code <code>401 Unauthorized</code>.</p>\n<p>If you are using this method too many times in a short period, you will get status code <code>429 Too Many Requests</code>. This prevents misusing logs in cases where reports would be more appropriate. For more information about when to use logs, please see the documentation.</p>\n<h3 id=\"smslogsresponse\">SMSLogsResponse</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results</em></td>\n<td>SentEmailLog</td>\n<td>Collection of logs.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"sentemaillog\">SentEmailLog</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>messageId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the message sent.</td>\n</tr>\n<tr>\n<td><em>to</em></td>\n<td>String</td>\n<td>The message destination address.</td>\n</tr>\n<tr>\n<td><em>from</em></td>\n<td>String</td>\n<td>Sender e-mail address.</td>\n</tr>\n<tr>\n<td><em>text</em></td>\n<td>String</td>\n<td>Text of the message that was sent.</td>\n</tr>\n<tr>\n<td><em>sentAt</em></td>\n<td>Date</td>\n<td>Tells when the e-mail was sent. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSSZ</code>.</td>\n</tr>\n<tr>\n<td><em>doneAt</em></td>\n<td>Date</td>\n<td>Tells when the e-mail was finished processing by us (i.e. delivered to destination)</td>\n</tr>\n<tr>\n<td><em>messageCount</em></td>\n<td>int</td>\n<td>How many parts the message was split into. Always will be 1 for e-mail.</td>\n</tr>\n<tr>\n<td><em>price</em></td>\n<td>Price</td>\n<td>Sent e-mail price.</td>\n</tr>\n<tr>\n<td><em>status</em></td>\n<td>Status</td>\n<td>Indicates whether the message is successfully sent, not sent, delivered, not delivered, waiting for delivery or any other possible status.</td>\n</tr>\n<tr>\n<td><em>error</em></td>\n<td>Error</td>\n<td>Indicates whether the error occurred during the query execution.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"price\">Price</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>pricePerMessage</em></td>\n<td>BigDecimal</td>\n<td>Price per one e-mail.</td>\n</tr>\n<tr>\n<td><em>currency</em></td>\n<td>String</td>\n<td>The currency in which the price is expressed.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"status\">Status</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>groupId</em></td>\n<td>int</td>\n<td>Status group ID</td>\n</tr>\n<tr>\n<td><em>groupName</em></td>\n<td>String</td>\n<td>Status group name.</td>\n</tr>\n<tr>\n<td><em>id</em></td>\n<td>int</td>\n<td>Status ID</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>Status name.</td>\n</tr>\n<tr>\n<td><em>description</em></td>\n<td>String</td>\n<td>Human readable description of the status.</td>\n</tr>\n<tr>\n<td><em>action</em></td>\n<td>String</td>\n<td>Action that should be taken to eliminate the error.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"error\">Error</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>groupId</em></td>\n<td>int</td>\n<td>Error group ID</td>\n</tr>\n<tr>\n<td><em>groupName</em></td>\n<td>String</td>\n<td>Error group name</td>\n</tr>\n<tr>\n<td><em>id</em></td>\n<td>int</td>\n<td>Error ID</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>Error name</td>\n</tr>\n<tr>\n<td><em>description</em></td>\n<td>String</td>\n<td>Human readable description of the error.</td>\n</tr>\n<tr>\n<td><em>permanent</em></td>\n<td>boolean</td>\n<td>Tells if the error is permanent</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-query-parameters\">Additional query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>campaignReferenceId</em></td>\n<td>String</td>\n<td>The ID that allows you to track, analyze, and show an aggregated overview and the performance of individual campaigns.</td>\n</tr>\n<tr>\n<td><em>applicationId</em></td>\n<td>String</td>\n<td>Application identifier used for filtering.</td>\n</tr>\n<tr>\n<td><em>entityId</em></td>\n<td>String</td>\n<td>Entity identifier used for filtering.</td>\n</tr>\n<tr>\n<td><em>useCursor</em></td>\n<td>Boolean</td>\n<td>Flag used to enable cursor-based pagination. When set to true, the system will use the cursor to fetch the next set of logs.</td>\n</tr>\n<tr>\n<td><em>cursor</em></td>\n<td>String</td>\n<td>Value which represents the current position in the data set. For the first request, this field shouldn't be defined. In subsequent requests, use the <code>nextCursor</code> value returned from the previous response to continue fetching data.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-response-fields\">Additional response fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>cursor</em></td>\n<td>Object</td>\n<td>Cursor information.</td>\n</tr>\n<tr>\n<td><em>cursor.limit</em></td>\n<td>Int</td>\n<td>Requested limit.</td>\n</tr>\n<tr>\n<td><em>cursor.nextCursor</em></td>\n<td>String</td>\n<td>The <code>cursor</code> value you will use in your next request to fetch the subsequent set of results.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["email","1","logs"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"231813c3-a791-4db2-8044-07c046a9e795","name":"Email messages logs","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":"{\"limit\":1 }"},"url":"https://go2.vhdmedia.se/email/1/logs"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Date","value":"Thu, 23 Mar 2023 15:36:46 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Server","value":"SMS API"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"X-Request-Id","value":"1679585806478798787"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"results\": [\n        {\n            \"messageId\": \"u7lvsf2hyur7hmg6igue\",\n            \"to\": \"tom.smith@vhdmedia.se\",\n            \"from\": \"example@vhdmedia.se\",\n            \"text\": \"b63fe043d0717b2b4a97cfa92802c394c985919213120cef902b6c45c20edf1d\",\n            \"sentAt\": \"2023-03-23T15:35:41.651+0000\",\n            \"doneAt\": \"2023-03-23T15:35:42.504+0000\",\n            \"messageCount\": 1,\n            \"price\": {\n                \"pricePerMessage\": 0.00043,\n                \"currency\": \"EUR\"\n            },\n            \"status\": {\n                \"groupId\": 3,\n                \"groupName\": \"DELIVERED\",\n                \"id\": 5,\n                \"name\": \"DELIVERED_TO_HANDSET\",\n                \"description\": \"Message delivered to handset\"\n            },\n            \"channel\": \"EMAIL\",\n            \"bulkId\": \"customBulkId1\"\n        },\n        {\n            \"messageId\": \"u7lvsf2hyur7hmg6igue\",\n            \"to\": \"jane.smith@vhdmedia.se\",\n            \"from\": \"example@vhdmedia.se\",\n            \"text\": \"b63fe043d0717b2b4a97cfa92802c394c985919213120cef902b6c45c20edf1d\",\n            \"sentAt\": \"2023-03-23T15:35:41.635+0000\",\n            \"doneAt\": \"2023-03-23T15:35:42.082+0000\",\n            \"messageCount\": 1,\n            \"price\": {\n                \"pricePerMessage\": 0.00043,\n                \"currency\": \"EUR\"\n            },\n            \"status\": {\n                \"groupId\": 3,\n                \"groupName\": \"DELIVERED\",\n                \"id\": 5,\n                \"name\": \"DELIVERED_TO_HANDSET\",\n                \"description\": \"Message delivered to handset\"\n            },\n            \"channel\": \"EMAIL\",\n            \"bulkId\": \"customBulkId1\"\n        }\n    ]\n}"}],"_postman_id":"bef096b5-a361-4d65-bc82-6012a0745155"},{"name":"Receive email delivery reports (webhook)","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","skip(\"This request only documents the message that VHD sends to YOUR server. It is not sent from here.\");"],"type":"text/javascript","packages":{}}}],"id":"0c94942f-8e63-4199-a768-0688d0ae7f2f","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n\"results\": [\n{\n\"bulkId\": \"aszzmbhu62l7bxkhmyrj\",\n\"price\": {\n\"pricePerMessage\": 0,\n\"currency\": \"UNKNOWN\"\n},\n\"status\": {\n\"id\": 5,\n\"groupId\": 3,\n\"groupName\": \"DELIVERED\",\n\"name\": \"DELIVERED_TO_HANDSET\",\n\"description\": \"Message delivered to handset\"\n},\n\"error\": {\n\"id\": 0,\n\"name\": \"NO_ERROR\",\n\"description\": \"No Error\",\n\"groupId\": 0,\n\"groupName\": \"OK\",\n\"permanent\": false\n},\n\"messageId\": \"hgtesn8bcmc71pujp92d\",\n\"doneAt\": \"2020-09-08T05:27:59.256+0000\",\n\"smsCount\": 1,\n\"sentAt\": \"2020-09-08T05:27:57.628+0000\",\n\"browserLink\": \"http://tracking.domain.com/render/content?id=9A31C6F61DBAE9664D74C7A5A5A01F92283F581D11EA80A28C12E83BC83D449BC4A9F32F1AE3C3E\",\n\"callbackData\": \"something you want back\",\n\"to\": \"john.doe@gmail.com\"\n}\n]\n}","options":{"raw":{"language":"json"}}},"url":"https://{yourDomain}/your/webhook/path","description":"<blockquote>\n<p><strong>Documentation only.</strong> This is the message that VHD sends to a URL on <strong>your</strong> server. It is skipped when you run the collection.</p>\n</blockquote>\n<p>Get real-time tracking reports for all opens/clicks to a specified endpoint.</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results</em></td>\n<td>array of objects</td>\n</tr>\n</tbody>\n</table>\n</div><pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n\"results\": [\n{\n\"bulkId\": \"\",\n\"price\": {\n\"pricePerMessage\": ,\n\"currency\": \"\"\n},\n\"status\": {\n\"id\": ,\n\"groupId\": ,\n\"groupName\": \"\",\n\"name\": \"\",\n\"description\": \"\"\n},\n\"error\": {\n\"id\": ,\n\"name\": \"\",\n\"description\": \"\",\n\"groupId\": ,\n\"groupName\": \"\",\n\"permanent\": \n},\n\"messageId\": \"\",\n\"doneAt\": \"\",\n\"smsCount\": ,\n\"sentAt\": \"\",\n\"browserLink\": \"\",\n\"callbackData\": \"\",\n\"to\": \"\"\n}\n]\n}\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>bulkId</td>\n<td>String</td>\n<td>The ID that uniquely identifies a list of email messages. This is either defined by user in the request or auto generated.</td>\n</tr>\n<tr>\n<td>price</td>\n<td>object</td>\n<td>Sent email price.</td>\n</tr>\n<tr>\n<td>status</td>\n<td>object</td>\n<td>Indicates whether the email is successfully sent, not sent, delivered, not delivered, waiting for delivery or any other possible status.</td>\n</tr>\n<tr>\n<td>error</td>\n<td>object</td>\n<td>Indicates whether the error occurred during the query execution.</td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td></td>\n</tr>\n<tr>\n<td>doneAt</td>\n<td><br />string</td>\n<td>Delivery date and time.The ID that uniquely identifies the email sent to the recipient.</td>\n</tr>\n<tr>\n<td>smsCount</td>\n<td><br />integer</td>\n<td>The number of emails sent.</td>\n</tr>\n<tr>\n<td>sentAt</td>\n<td><br />string</td>\n<td>Send date and time. Has the following format: yyyy-MM-dd'T'HH:mm:ss.SSSZ.</td>\n</tr>\n<tr>\n<td>browserLink</td>\n<td>string</td>\n<td>Contains the link to the HTML sent to recipient. This will be present only if the view in browser feature is used in the email</td>\n</tr>\n<tr>\n<td>callbackData</td>\n<td><br />string</td>\n<td>Callback data sent through callbackData field in fully featured email.</td>\n</tr>\n<tr>\n<td>to</td>\n<td><br />string</td>\n<td>Destination email address.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"price-object\">Price object</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>currency</td>\n<td>string</td>\n<td>The currency in which the price is expressed.</td>\n</tr>\n<tr>\n<td>pricePerMessage</td>\n<td>number</td>\n<td>Price per message.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"status-object\">Status object</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>groupId</em></td>\n<td>int</td>\n<td>Status group ID.</td>\n</tr>\n<tr>\n<td><em>groupName</em></td>\n<td>string</td>\n<td>Status group name.</td>\n</tr>\n<tr>\n<td><em>id</em></td>\n<td>int</td>\n<td>Status ID.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>string</td>\n<td>Status name.</td>\n</tr>\n<tr>\n<td><em>description</em></td>\n<td>string</td>\n<td>Human readable description of the status.</td>\n</tr>\n<tr>\n<td><em>action</em></td>\n<td>string</td>\n<td>Action that should be taken to eliminate the error</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"error-object\">Error object</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>groupId</em></td>\n<td>int</td>\n<td>Error group ID.</td>\n</tr>\n<tr>\n<td><em>groupName</em></td>\n<td>string</td>\n<td>Error group name.</td>\n</tr>\n<tr>\n<td><em>id</em></td>\n<td>int</td>\n<td>Error ID.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>string</td>\n<td>Error name.</td>\n</tr>\n<tr>\n<td><em>description</em></td>\n<td>string</td>\n<td>Human readable description of the error.</td>\n</tr>\n<tr>\n<td>permanent</td>\n<td>boolean</td>\n<td>Indicates whether the error is permanent.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-fields\">Additional fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results[].entityId</em></td>\n<td>String</td>\n<td>Used when specifying an entity in outbound send requests. It is also returned in notification events. For detailed usage, refer to the documentation.</td>\n</tr>\n<tr>\n<td><em>results[].applicationId</em></td>\n<td>String</td>\n<td>Used when specifying an application in outbound send requests. It is also returned in notification events. For detailed usage, refer to the documentation.</td>\n</tr>\n<tr>\n<td><em>results[].campaignReferenceId</em></td>\n<td>String</td>\n<td>ID of a campaign that was sent in the message.</td>\n</tr>\n<tr>\n<td><em>results[].attemptCount</em></td>\n<td>Int</td>\n<td>Number of times delivery was attempted for the email.</td>\n</tr>\n<tr>\n<td><em>results[].timeToFirstAttempt</em></td>\n<td>Int</td>\n<td>This is the time in milliseconds between accepting the request and making the first delivery attempt to the destination.</td>\n</tr>\n<tr>\n<td><em>results[].sendingIp</em></td>\n<td>String</td>\n<td>The IP address that was used to send out the email.</td>\n</tr>\n<tr>\n<td><em>results[].smtp</em></td>\n<td>Object</td>\n<td>SMTP details for the sent email.</td>\n</tr>\n<tr>\n<td><em>results[].smtp.response</em></td>\n<td>String</td>\n<td>SMTP server response for the sent email.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["your","webhook","path"],"host":["{yourDomain}"],"query":[],"variable":[]}},"response":[{"id":"004892e9-61c8-4f5d-b9d7-fb1703fdeafb","name":"Receive sent Email report","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n\"results\": [\n{\n\"bulkId\": \"aszzmbhu62l7bxkhmyrj\",\n\"price\": {\n\"pricePerMessage\": 0,\n\"currency\": \"UNKNOWN\"\n},\n\"status\": {\n\"id\": 5,\n\"groupId\": 3,\n\"groupName\": \"DELIVERED\",\n\"name\": \"DELIVERED_TO_HANDSET\",\n\"description\": \"Message delivered to handset\"\n},\n\"error\": {\n\"id\": 0,\n\"name\": \"NO_ERROR\",\n\"description\": \"No Error\",\n\"groupId\": 0,\n\"groupName\": \"OK\",\n\"permanent\": false\n},\n\"messageId\": \"hgtesn8bcmc71pujp92d\",\n\"doneAt\": \"2020-09-08T05:27:59.256+0000\",\n\"smsCount\": 1,\n\"sentAt\": \"2020-09-08T05:27:57.628+0000\",\n\"browserLink\": \"http://tracking.domain.com/render/content?id=9A31C6F61DBAE9664D74C7A5A5A01F92283F581D11EA80A28C12E83BC83D449BC4A9F32F1AE3C3E\",\n\"callbackData\": \"something you want back\",\n\"to\": \"john.doe@gmail.com\"\n}\n]\n}","options":{"raw":{"language":"json"}}},"url":"https://{yourDomain}/your/webhook/path"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"166"},{"key":"Connection","value":"keep-alive"},{"key":"Date","value":"Thu, 04 May 2023 13:28:15 GMT"},{"key":"x-zapier-hook-id","value":"0187e6f2-f5f6-caa9-173f-f113ca25d097"},{"key":"x-zapier-hook-attempt","value":"0187e6f2-f5f6-caa9-173f-f113ca25d097"},{"key":"x-zapier-hook-request-id","value":"0187e6f2-f5f6-caa9-173f-f113ca25d097"},{"key":"x-zapier-hook-status","value":"success"},{"key":"access-control-allow-origin","value":"*"},{"key":"X-Rate-Limit-Limit","value":"10000"},{"key":"X-Rate-Limit-Remaining","value":"9999"},{"key":"X-Rate-Limit-Reset","value":"1683207065"},{"key":"X-Cache","value":"Miss from cloudfront"},{"key":"Via","value":"1.1 b088f021bbfbe62b285291be4d6fc2ae.cloudfront.net (CloudFront)"},{"key":"X-Amz-Cf-Pop","value":"LHR61-P4"},{"key":"X-Amz-Cf-Id","value":"cjw6ei401u0tGpI617J06d_AZoVTNnBsLSbqJ9ZDDJRUyUGCBBMRBQ=="}],"cookie":[],"responseTime":null,"body":"{\n    \"attempt\": \"0187e6f2-f5f6-caa9-173f-f113ca25d097\",\n    \"id\": \"0187e6f2-f5f6-caa9-173f-f113ca25d097\",\n    \"request_id\": \"0187e6f2-f5f6-caa9-173f-f113ca25d097\",\n    \"status\": \"success\"\n}"}],"_postman_id":"0c94942f-8e63-4199-a768-0688d0ae7f2f"},{"name":"Receive email tracking reports (webhook)","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","skip(\"This request only documents the message that VHD sends to YOUR server. It is not sent from here.\");"],"type":"text/javascript","packages":{}}}],"id":"fd512438-8be4-43b2-8f49-7fdf892acff9","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"notificationType\": \"UNSUBSCRIBED\",\n  \"recipient\": \"john.doe@somedomain.com\",\n  \"url\": \"http://www.somelink.com\",\n  \"sendDateTime\": 1599619719349,\n  \"messageId\": \"3h5dleyqk6cle5fc54md\",\n  \"bulkId\": \"4f8prts39ems4g1o3m5s\"\n}","options":{"raw":{"language":"json"}}},"url":"https://{yourDomain}/your/webhook/path","description":"<blockquote>\n<p><strong>Documentation only.</strong> This is the message that VHD sends to a URL on <strong>your</strong> server. It is skipped when you run the collection.</p>\n</blockquote>\n<blockquote>\n<p>Notifications for opens, clicks, unsubscribes and similar recipient actions. The URL is set with <code>options.tracking.trackingUrl</code> (v4) or <code>trackingUrl</code> (v3) when you send.</p>\n</blockquote>\n<p>For each email that you send out, we can send you a tracking report for opened, clicked, complained and unsubscribed. All you need to do is specify your endpoint when sending an email and we will deliver a report to you in real-time.</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n\"notificationType\": \"\",\n\"domain\": \"string\",\n\"recipient\": \"\",\n\"url\": \"\"\n\"sendDateTime\": \"\",\n\"messageId\": ,\n\"bulkId\": \"\",\n\"recipientInfo\": {\n  \"deviceType\": \"\",\n   \"os\": \"\",\n   \"deviceName\": \"\",\n},\n\"geoLocation\": {\n   \"country_name\": \"\",\n   \"city\": \"\",\n   \"latitude\": \"\",\n   \"longitude\":\"\"\n}\n}\n\n</code></pre>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>notificationType</td>\n<td>string</td>\n<td>Tells the type of user event that took place. Possible events: OPENED, CLICKED, COMPLAINED, UNSUBSCRIBED.</td>\n</tr>\n<tr>\n<td>domain</td>\n<td>string</td>\n<td>The sending domain used to send the email to the recipient.</td>\n</tr>\n<tr>\n<td>recipient</td>\n<td>string</td>\n<td>Recipient of the email.</td>\n</tr>\n<tr>\n<td>url</td>\n<td>string</td>\n<td>The link the recipient has clicked. This attribute will only be present only if the event is of the type CLICKED.</td>\n</tr>\n<tr>\n<td>sendDateTime</td>\n<td>number</td>\n<td>The time at which the email was sent. Time is in milliseconds.</td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>The ID uniquely identifies the message sent to the recipient.</td>\n</tr>\n<tr>\n<td>bulkId</td>\n<td>string</td>\n<td>The ID uniquely identifies a list of email messages. This is either defined by the user in the request or auto-generated</td>\n</tr>\n<tr>\n<td>recipientInfo</td>\n<td>object</td>\n<td>Recipient information such as device type, OS and device name.auto-generated</td>\n</tr>\n<tr>\n<td>geoLocation</td>\n<td>object</td>\n<td>Geolocation data such as Country, City, Latitude and Longitude. This data will be available only for opens and clicks.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"recipientinfo-object\">RecipientInfo object</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>deviceType</td>\n<td>string</td>\n<td>The currency in which the price is expressed.</td>\n</tr>\n<tr>\n<td>os</td>\n<td>string</td>\n<td>Device name of the action originating device.</td>\n</tr>\n<tr>\n<td>deviceName</td>\n<td>string</td>\n<td>Device name of the action originating device.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"geolocation-object\">GeoLocation object</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>country_name</td>\n<td>string</td>\n<td>Country where the user action is recorded.</td>\n</tr>\n<tr>\n<td>city</td>\n<td>string</td>\n<td>The city where the user action is recorded.</td>\n</tr>\n<tr>\n<td>latitude</td>\n<td>string</td>\n<td>Latitude of the action-originating device.</td>\n</tr>\n<tr>\n<td>longitude</td>\n<td>string</td>\n<td>Longitude of the action-originating device.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["your","webhook","path"],"host":["{yourDomain}"],"query":[],"variable":[]}},"response":[{"id":"efb2cb90-052d-40e0-876f-8ccb5dcb3c0d","name":"Open reports","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"notificationType\": \"OPENED\",\n  \"domain\": \"mydomain.com\",\n  \"recipient\": \"john.doe@somedomain.com\",\n  \"sendDateTime\": 1599542877689,\n  \"messageId\": \"14b734recsf69n8zkao5\",\n  \"bulkId\": \"ikzzmbhu6223bxkhmyrj\",\n  \"recipientInfo\": {\n    \"deviceType\": \"Phone\",\n    \"os\": \"iOS 12\",\n    \"deviceName\": \"Apple\"\n  },\n  \"geoLocation\": {\n    \"city\": \"Los Angeles\",\n    \"longitude\": \"-118.24550\",\n    \"latitude\": \"34.05361\",\n    \"country_name\": \"United States\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://{yourDomain}/your/webhook/path"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"166"},{"key":"Connection","value":"keep-alive"},{"key":"Date","value":"Thu, 04 May 2023 13:35:31 GMT"},{"key":"x-zapier-hook-status","value":"success"},{"key":"access-control-allow-origin","value":"*"},{"key":"X-Rate-Limit-Limit","value":"10000"},{"key":"X-Rate-Limit-Remaining","value":"9999"},{"key":"X-Rate-Limit-Reset","value":"1683207365"},{"key":"X-Cache","value":"Miss from cloudfront"},{"key":"Via","value":"1.1 ebeaa224cccd8c2d73fa986469993296.cloudfront.net (CloudFront)"},{"key":"X-Amz-Cf-Pop","value":"LHR61-P4"},{"key":"X-Amz-Cf-Id","value":"s5f6P2qq_0yDgiuES3s8E8byw6f0QMwpEHCIn96-Wi6Y-Ae6zseoXw=="}],"cookie":[],"responseTime":null,"body":"{\n    \"attempt\": \"0187e6f9-9cf8-4c05-c47e-19c6e6d452a3\",\n    \"id\": \"0187e6f9-9cf8-4c05-c47e-19c6e6d452a3\",\n    \"request_id\": \"0187e6f9-9cf8-4c05-c47e-19c6e6d452a3\",\n    \"status\": \"success\"\n}"},{"id":"1b99eb7d-aa3a-4b0b-8f39-dff6468c089a","name":"Click reports","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"\n{\n\"notificationType\": \"CLICKED\",\n\"domain\": \"sd1.emailtesthub.com\",\n\"recipient\": \"john.doe@somedomain.com\",\n\"url\": \"http://www.somelink.com\",\n\"sendDateTime\": 1599619719349,\n\"messageId\": \"3h5dleyqk6cle5fc54md\",\n\"bulkId\": \"4f8prts39ems4g1o3m5s\",\n\"recipientInfo\": {\n\"deviceType\": \"Desktop\",\n\"os\": \"Windows 10\",\n\"deviceName\": \"PC\"\n},\n\"geoLocation\": {\n\"city\": \"Los Angeles\",\n\"longitude\": \"-118.24550\",\n\"latitude\": \"34.05361\",\n\"country_name\": \"United States\"\n}\n}","options":{"raw":{"language":"json"}}},"url":"https://{yourDomain}/your/webhook/path"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"},{"key":"x-zapier-hook-status","value":"success"},{"key":"access-control-allow-origin","value":"*"},{"key":"X-Rate-Limit-Limit","value":"10000"},{"key":"X-Rate-Limit-Remaining","value":"9999"},{"key":"X-Rate-Limit-Reset","value":"1683207665"},{"key":"X-Cache","value":"Miss from cloudfront"},{"key":"Via","value":"1.1 ebeaa224cccd8c2d73fa986469993296.cloudfront.net (CloudFront)"},{"key":"X-Amz-Cf-Pop","value":"LHR61-P4"},{"key":"X-Amz-Cf-Id","value":"qkCpXwGqT_tBqeTyQgKsguwrcbPe_Pa2WeXLvHjA4Aa5n5jTdZONGQ=="}],"cookie":[],"responseTime":null,"body":"{\n    \"attempt\": \"0187e6fb-580d-370e-2ebe-e2fec17c361e\",\n    \"id\": \"0187e6fb-580d-370e-2ebe-e2fec17c361e\",\n    \"request_id\": \"0187e6fb-580d-370e-2ebe-e2fec17c361e\",\n    \"status\": \"success\"\n}"},{"id":"17a9c063-298e-4ef6-8257-f0fc5441052e","name":"Complained reports","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"notificationType\": \"COMPLAINED\",\n  \"domain\": \"sd1.emailtesthub.com\",\n  \"recipient\": \"john.doe@somedomain.com\",\n  \"sendDateTime\": 1599619719349,\n  \"messageId\": \"3h5dleyqk6cle5fc54md\"\n}","options":{"raw":{"language":"json"}}},"url":"https://{yourDomain}/your/webhook/path"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"166"},{"key":"Connection","value":"keep-alive"},{"key":"x-zapier-hook-status","value":"success"},{"key":"access-control-allow-origin","value":"*"},{"key":"X-Rate-Limit-Limit","value":"10000"},{"key":"X-Rate-Limit-Remaining","value":"9998"},{"key":"X-Rate-Limit-Reset","value":"1683207665"},{"key":"X-Cache","value":"Miss from cloudfront"},{"key":"Via","value":"1.1 ebeaa224cccd8c2d73fa986469993296.cloudfront.net (CloudFront)"},{"key":"X-Amz-Cf-Pop","value":"LHR61-P4"},{"key":"X-Amz-Cf-Id","value":"OT9QgxnLtbGcyc9uQoQIWT5dhExY4RcjknjJg_xut023FeG3lZ8gaQ=="}],"cookie":[],"responseTime":null,"body":"{\n    \"attempt\": \"0187e6fb-f736-a4f9-781d-7d6bbd592dc3\",\n    \"id\": \"0187e6fb-f736-a4f9-781d-7d6bbd592dc3\",\n    \"request_id\": \"0187e6fb-f736-a4f9-781d-7d6bbd592dc3\",\n    \"status\": \"success\"\n}"},{"id":"5a7a6a2b-2052-42c7-bb16-2c79be29a987","name":"Unsubscribe reports","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"notificationType\": \"UNSUBSCRIBED\",\n  \"recipient\": \"john.doe@somedomain.com\",\n  \"url\": \"http://www.somelink.com\",\n  \"sendDateTime\": 1599619719349,\n  \"messageId\": \"3h5dleyqk6cle5fc54md\",\n  \"bulkId\": \"4f8prts39ems4g1o3m5s\"\n}","options":{"raw":{"language":"json"}}},"url":"https://{yourDomain}/your/webhook/path"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"166"},{"key":"Connection","value":"keep-alive"},{"key":"x-zapier-hook-status","value":"success"},{"key":"access-control-allow-origin","value":"*"},{"key":"X-Rate-Limit-Limit","value":"10000"},{"key":"X-Rate-Limit-Remaining","value":"9997"},{"key":"X-Rate-Limit-Reset","value":"1683207665"},{"key":"X-Cache","value":"Miss from cloudfront"},{"key":"Via","value":"1.1 ebeaa224cccd8c2d73fa986469993296.cloudfront.net (CloudFront)"},{"key":"X-Amz-Cf-Pop","value":"LHR61-P4"},{"key":"X-Amz-Cf-Id","value":"qTAM-Wd8VzEsGZDQb7XwQuYWAWVpKCwG6sJlt6m2T-U4raE9PLQgOA=="}],"cookie":[],"responseTime":null,"body":"{\n    \"attempt\": \"0187e6fc-e8fd-ea9b-02f2-e891a970814c\",\n    \"id\": \"0187e6fc-e8fd-ea9b-02f2-e891a970814c\",\n    \"request_id\": \"0187e6fc-e8fd-ea9b-02f2-e891a970814c\",\n    \"status\": \"success\"\n}"}],"_postman_id":"fd512438-8be4-43b2-8f49-7fdf892acff9"},{"name":"Receive email platform events (webhook)","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","skip(\"This request only documents the message that VHD sends to YOUR server. It is not sent from here.\");"],"type":"text/javascript","packages":{}}}],"id":"0718a4df-42c4-4e4f-a38b-0220ac26b381","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"eventId\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"createdAt\": 1767308400000,\n  \"eventDetails\": {\n    \"type\": \"HIGH_BOUNCE_RATE_WARNING\",\n    \"accountKey\": \"8F0792F86035A9F4290821F1EE6BC06A\",\n    \"domain\": \"example.com\",\n    \"warnThreshold\": 3.0,\n    \"bounceRate\": 4.6,\n    \"scope\": \"HOURLY\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://{yourDomain}/your/webhook/path","description":"<blockquote>\n<p><strong>Documentation only.</strong> This is the message that VHD sends to a URL on <strong>your</strong> server. It is skipped when you run the collection.</p>\n</blockquote>\n<p>VHD sends platform events about your email sending setup to a URL on your server as they happen, for example a warning when a domain's bounce rate is high or a notice that sending was suspended. Your server should reply <code>200 OK</code> to confirm it accepted the event.</p>\n<p>The <code>eventDetails.type</code> field tells you which event it is.</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>eventId</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Unique ID of the event. This ID can be used for deduplication purposes.</td>\n</tr>\n<tr>\n<td><em>createdAt</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Epoch milliseconds when the event occurred.</td>\n</tr>\n<tr>\n<td><em>eventDetails</em></td>\n<td>Object</td>\n<td><strong>Required.</strong> Email platform event data.</td>\n</tr>\n<tr>\n<td><em>eventDetails.type</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Type of the email platform event. One of: <code>HIGH_BOUNCE_RATE_WARNING</code>, <code>HIGH_BOUNCE_RATE_BLOCKED</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"events\">Events</h3>\n<ul>\n<li><strong>High bounce rate warning</strong>: Sent when a domain's bounce rate exceeds the warning threshold. The domain remains active but action is recommended to avoid suspension.</li>\n<li><strong>High bounce rate block</strong>: Sent when a domain's bounce rate exceeds the block threshold. The domain has been suspended and email sending is disabled for following 24 hours.</li>\n</ul>\n<p>Use <code>eventId</code> to ignore events you have already processed.</p>\n","urlObject":{"protocol":"https","path":["your","webhook","path"],"host":["{yourDomain}"],"query":[],"variable":[]}},"response":[{"id":"6c545cdc-0a93-4e83-b101-4a24742e623e","name":"High bounce rate warning","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"eventId\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"createdAt\": 1767308400000,\n  \"eventDetails\": {\n    \"type\": \"HIGH_BOUNCE_RATE_WARNING\",\n    \"accountKey\": \"8F0792F86035A9F4290821F1EE6BC06A\",\n    \"domain\": \"example.com\",\n    \"warnThreshold\": 3.0,\n    \"bounceRate\": 4.6,\n    \"scope\": \"HOURLY\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://{yourDomain}/your/webhook/path"},"status":"OK","code":200,"_postman_previewlanguage":"text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":null},{"id":"fa32bcac-a638-43fd-9b0f-8d1e3cc36544","name":"High bounce rate block","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"eventId\": \"dc592d92-54bb-4c97-b9fb-7aafb8f07bfd\",\n  \"createdAt\": 1767308400000,\n  \"eventDetails\": {\n    \"type\": \"HIGH_BOUNCE_RATE_BLOCKED\",\n    \"accountKey\": \"8F0792F86035A9F4290821F1EE6BC06A\",\n    \"domain\": \"example.com\",\n    \"blockThreshold\": 5.0,\n    \"bounceRate\": 6.6,\n    \"scope\": \"DAILY\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://{yourDomain}/your/webhook/path"},"status":"OK","code":200,"_postman_previewlanguage":"text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":null}],"_postman_id":"0718a4df-42c4-4e4f-a38b-0220ac26b381"}],"id":"4a9831d5-df59-4860-bd68-9cfb9ee4a163","description":"<p>Get delivery reports and logs of sent emails, or receive delivery reports, tracking reports and platform events on your own server through webhooks. Use the v4 requests for new integrations.</p>\n","_postman_id":"4a9831d5-df59-4860-bd68-9cfb9ee4a163"},{"name":"MANAGE SCHEDULED EMAIL","item":[{"name":"Schedule an email (API v4)","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","if (!(pm.environment.get(\"testEmail\") || \"\").trim()) { skip(\"testEmail is not set\"); }"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests for Schedule an email (API v4).","pm.test(\"Status code is 200\", function () { pm.expect(pm.response.code).to.eql(200); });","pm.test(\"The scheduled email is accepted (it is canceled at the end of this flow)\", function () {","    var j = pm.response.json();","    pm.expect(j).to.have.property(\"bulkId\").that.is.a(\"string\");","    pm.expect(j.messages[0].status.groupName).to.not.be.oneOf([\"REJECTED\", \"UNDELIVERABLE\"]);","});","","pm.environment.set(\"emailBulkId\", pm.response.json().bulkId);"],"type":"text/javascript","packages":{}}}],"id":"994c3726-e269-4cb1-a250-1e34a9d5adf7","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"messages\": [\n    {\n      \"sender\": \"example@vhdmedia.eu\",\n      \"destinations\": [\n        {\n          \"to\": [\n            {\n              \"destination\": \"jane.smith@vhdmedia.se\",\n              \"placeholders\": \"{\\\"name\\\":\\\"Jane\\\"}\"\n            }\n          ]\n        }\n      ],\n      \"content\": {\n        \"subject\": \"Welcome to VHD, {{name}}\",\n        \"html\": \"<h1>Hello {{name}}</h1><p>This is a test email from the VHD API.</p>\",\n        \"text\": \"Dear {{name}}, this is a test email from the VHD API.\"\n      },\n      \"webhooks\": {\n        \"delivery\": {\n          \"url\": \"https://www.example.com/email/delivery\",\n          \"intermediateReport\": true,\n          \"notify\": true\n        },\n        \"contentType\": \"application/json\",\n        \"callbackData\": \"DLR callback data\"\n      }\n    }\n  ],\n  \"options\": {\n    \"tracking\": {\n      \"trackOpens\": true,\n      \"trackClicks\": true\n    },\n    \"schedule\": {\n      \"sendAt\": \"{{sendAt}}\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/email/4/messages","description":"<p>Schedule an email for later with <code>options.schedule.sendAt</code> (up to 5 days ahead). The <code>bulkId</code> is saved in the environment variable <code>emailBulkId</code>, and the requests that follow act on it. The flow <strong>cancels</strong> the email at the end, so it is never sent.</p>\n<p>Send one email or many in a single request, with text, HTML, a template, attachments, and placeholders. This is the current version of the email send API and replaces <strong>Send fully featured email (API v3)</strong>, which stays available.</p>\n<p>Messages sent here can use the VHD options for tracking, scheduling, delivery windows, IP pools, and storage. Delivery reports go to the URL in <code>webhooks.delivery.url</code>, and open and click notifications go to <code>options.tracking.trackingUrl</code>.</p>\n<blockquote>\n<p><strong>Scheduling.</strong> With <code>options.schedule.sendAt</code>, an email can be scheduled <strong>up to 5 days</strong> ahead. The older v3 send accepted dates further ahead. Use the scheduled-email requests to view, pause, reschedule or cancel a scheduled bulk.</p>\n</blockquote>\n<blockquote>\n<p><strong>Placeholders are JSON strings.</strong> The values of <code>placeholders</code> and <code>defaultPlaceholders</code> must be sent as a string that contains JSON, for example <code>\"{\\\"name\\\": \\\"Jane\\\"}\"</code>, not as an object.</p>\n</blockquote>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>messages</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> An array of message objects of a single message or multiple messages sent under one bulk ID.</td>\n</tr>\n<tr>\n<td><em>messages[].sender</em></td>\n<td>String</td>\n<td>Email address with optional sender name. Note: This field is required if <code>templateId</code> is not present.</td>\n</tr>\n<tr>\n<td><em>messages[].destinations</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> An array of destination objects for where messages are being sent. A valid destination is required. Note: Maximum number of recipients is 1000 overall including <code>to</code>, <code>cc</code> and <code>bcc</code> field.</td>\n</tr>\n<tr>\n<td><em>messages[].destinations[].to</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> List of TO recipient email addresses.</td>\n</tr>\n<tr>\n<td><em>messages[].destinations[].to[].destination</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Email address of the recipient in a form of <code>john.smith@somecompany.com</code></td>\n</tr>\n<tr>\n<td><em>messages[].destinations[].to[].messageId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the message sent to a recipient.</td>\n</tr>\n<tr>\n<td><em>messages[].destinations[].to[].placeholders</em></td>\n<td>String</td>\n<td>As optional feature, a specific placeholder can be defined whose value will apply only for this destination. Value should be defined as: <code>{\"name\": \"John\"}</code>.</td>\n</tr>\n<tr>\n<td><em>messages[].destinations[].cc</em></td>\n<td>Array</td>\n<td>List of CC recipient email addresses.</td>\n</tr>\n<tr>\n<td><em>messages[].destinations[].cc[].destination</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Email address of the recipient in a form of <code>john.smith@somecompany.com</code></td>\n</tr>\n<tr>\n<td><em>messages[].destinations[].cc[].messageId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the message sent to a recipient.</td>\n</tr>\n<tr>\n<td><em>messages[].destinations[].cc[].placeholders</em></td>\n<td>String</td>\n<td>As optional feature, a specific placeholder can be defined whose value will apply only for this destination. Value should be defined as: <code>{\"name\": \"John\"}</code>.</td>\n</tr>\n<tr>\n<td><em>messages[].destinations[].bcc</em></td>\n<td>Array</td>\n<td>List of BCC recipient email addresses.</td>\n</tr>\n<tr>\n<td><em>messages[].destinations[].bcc[].destination</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Email address of the recipient in a form of <code>john.smith@somecompany.com</code></td>\n</tr>\n<tr>\n<td><em>messages[].destinations[].bcc[].messageId</em></td>\n<td>String</td>\n<td>The ID that uniquely identifies the message sent to a recipient.</td>\n</tr>\n<tr>\n<td><em>messages[].destinations[].bcc[].placeholders</em></td>\n<td>String</td>\n<td>As optional feature, a specific placeholder can be defined whose value will apply only for this destination. Value should be defined as: <code>{\"name\": \"John\"}</code>.</td>\n</tr>\n<tr>\n<td><em>messages[].destinations[].replyTo</em></td>\n<td>String</td>\n<td>Email address to which recipients of the email can reply.</td>\n</tr>\n<tr>\n<td><em>messages[].destinations[].preserveRecipients</em></td>\n<td>Boolean</td>\n<td>When this option is set to <code>true</code>, all recipients in the <code>to</code> field will be able to see the entire list of recipients who received the email, and the response will include a single <code>messageId</code>. If the option is set to <code>false</code> , each recipient will only see their own email address, and the response will provide a unique <code>messageId</code> for each individual recipient.</td>\n</tr>\n<tr>\n<td><em>messages[].content</em></td>\n<td>Object</td>\n<td><strong>Required.</strong> Message content.</td>\n</tr>\n<tr>\n<td><em>messages[].content.subject</em></td>\n<td>String</td>\n<td>Message subject. Note: This field is required if <code>templateId</code> is not present.</td>\n</tr>\n<tr>\n<td><em>messages[].content.text</em></td>\n<td>String</td>\n<td>Body of the message.</td>\n</tr>\n<tr>\n<td><em>messages[].content.html</em></td>\n<td>String</td>\n<td>The message's body in HTML format. If both <code>html</code> and <code>text</code> fields are included, the <code>text</code> field will be disregarded, and the message will be sent using the <code>html</code> content.</td>\n</tr>\n<tr>\n<td><em>messages[].content.ampHtml</em></td>\n<td>String</td>\n<td>The message's body in AMP HTML format. If you include <code>ampHtml</code>, you must also include <code>html</code>, which will be displayed if AMP is not supported. Keep in mind that not all email clients support AMP HTML. For guidance on configuring the Gmail client, please visit this link: <a href=\"https://developers.google.com/gmail/ampemail/\">https://developers.google.com/gmail/ampemail/</a> .</td>\n</tr>\n<tr>\n<td><em>messages[].content.templateId</em></td>\n<td>String</td>\n<td>The Template ID with predefined email content created through the VHD web interface or API. When <code>templateId</code> is specified, the <code>html</code> and <code>text</code> fields will be disregarded. Note: <code>templateId</code> only supports the <code>Broadcast</code> value; <code>Content</code> and <code>Flow</code> templates are not supported.</td>\n</tr>\n<tr>\n<td><em>messages[].content.attachments</em></td>\n<td>Array</td>\n<td>File attachments.</td>\n</tr>\n<tr>\n<td><em>messages[].content.attachments[].type</em></td>\n<td>String</td>\n<td><strong>Required.</strong></td>\n</tr>\n<tr>\n<td><em>messages[].content.inlineImages</em></td>\n<td>Array</td>\n<td>Allows for inserting an image file inside the HTML code of the email by using <code>cid:FILENAME</code> instead of providing an external link to the image.</td>\n</tr>\n<tr>\n<td><em>messages[].content.inlineImages[].type</em></td>\n<td>String</td>\n<td><strong>Required.</strong></td>\n</tr>\n<tr>\n<td><em>messages[].content.defaultPlaceholders</em></td>\n<td>String</td>\n<td>General placeholders: <code>{\"ph1\": \"Success\"}</code> will replace the key <code>{{ph1}}</code> with the value Success throughout the email, including the <code>subject</code>, <code>text</code>, and HTML. If there are multiple recipients in the To field, this placeholder will use the same value for the key ph1 for all recipients.</td>\n</tr>\n<tr>\n<td><em>messages[].content.landingPagePlaceholders</em></td>\n<td>String</td>\n<td>Personalize Opt-Out Landing Page by inserting placeholders. Insert placeholder or tag while designing landing page. Value should be defined as: <code>{\"unsubscribe\": \"Unsubscribe\"}</code></td>\n</tr>\n<tr>\n<td><em>messages[].content.optoutLandingPageId</em></td>\n<td>String</td>\n<td>The Opt-Out Landing Page ID specifies the page to be displayed when an end user clicks the unsubscribe link. If the ID is not provided, the default opt-out landing page will be used. Create a landing page over VHD web interface and use its ID, for example, <code>1_23456.</code></td>\n</tr>\n<tr>\n<td><em>messages[].content.templateLanguageVersion</em></td>\n<td>String</td>\n<td>Indicates the version of the template language to be used in the current message template. Use version 1 for the older template language and version 2 to access features of the new template language. If not specified, version 1 will be used by default.</td>\n</tr>\n<tr>\n<td><em>messages[].content.headers</em></td>\n<td>String</td>\n<td>Additional email headers for customization that can be provided in a form of JSON. Example: <code>headers={\"X-CustomHeader\": \"Header value\"}</code>. There are a few exceptions of headers which are not adjustable through this option: <code>To</code>, <code>Cc</code>, <code>Bcc</code>, <code>Subject</code>, <code>Content-Type</code>, <code>DKIM-Signature</code>, <code>Content-Transfer-Encoding</code>, <code>Return-Path</code>, <code>MIME-Version</code></td>\n</tr>\n<tr>\n<td><em>messages[].options</em></td>\n<td>Object</td>\n<td>Message options.</td>\n</tr>\n<tr>\n<td><em>messages[].options.platform</em></td>\n<td>Object</td>\n<td>Platform options. For more details, see documentation.</td>\n</tr>\n<tr>\n<td><em>messages[].options.platform.entityId</em></td>\n<td>String</td>\n<td>Used when specifying an entity in outbound send requests. It is also returned in notification events. For detailed usage, refer to the documentation.</td>\n</tr>\n<tr>\n<td><em>messages[].options.platform.applicationId</em></td>\n<td>String</td>\n<td>Used when specifying an application in outbound send requests. It is also returned in notification events. For detailed usage, refer to the documentation.</td>\n</tr>\n<tr>\n<td><em>messages[].options.validityPeriod</em></td>\n<td>Object</td>\n<td>Message validity period. Once expired, the message won't be sent. Validity period longer than 48h is not supported. If exceeded, it will be automatically set to 48h.</td>\n</tr>\n<tr>\n<td><em>messages[].options.validityPeriod.amount</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Message validity period's value. If <code>timeUnit</code> is not set, it will default to <code>MINUTES</code>.</td>\n</tr>\n<tr>\n<td><em>messages[].options.validityPeriod.timeUnit</em></td>\n<td>String</td>\n<td>Message validity period time unit. One of: <code>SECONDS</code>, <code>MINUTES</code>, <code>HOURS</code>.</td>\n</tr>\n<tr>\n<td><em>messages[].options.deliveryTimeWindow</em></td>\n<td>Object</td>\n<td>Sets specific message delivery window outside of which messages won't be delivered. Often, used when there are restrictions on when messages can be sent. The exact time of the day to start sending messages can be defined using the <code>from</code> property. The exact time of the day to end sending messages can be defined using the <code>to</code> property. Properties <code>from</code> and <code>to</code> should be both provided with the minimum 1 hour difference or omitted.</td>\n</tr>\n<tr>\n<td><em>messages[].options.deliveryTimeWindow.days</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> Days of the week which are included in the delivery time window. At least one day must be provided. Separate multiple days with a comma.</td>\n</tr>\n<tr>\n<td><em>messages[].options.deliveryTimeWindow.from</em></td>\n<td>Object</td>\n<td>The exact time of the day. The time is expressed in the UTC time zone.</td>\n</tr>\n<tr>\n<td><em>messages[].options.deliveryTimeWindow.from.hour</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Hour when the time window opens when used in the <code>from</code> property or closes when used in the <code>to</code> property.</td>\n</tr>\n<tr>\n<td><em>messages[].options.deliveryTimeWindow.from.minute</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Minute when the time window opens when used in the <code>from</code> property or closes when used in the <code>to</code> property.</td>\n</tr>\n<tr>\n<td><em>messages[].options.deliveryTimeWindow.to</em></td>\n<td>Object</td>\n<td>The exact time of the day. The time is expressed in the UTC time zone.</td>\n</tr>\n<tr>\n<td><em>messages[].options.deliveryTimeWindow.to.hour</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Hour when the time window opens when used in the <code>from</code> property or closes when used in the <code>to</code> property.</td>\n</tr>\n<tr>\n<td><em>messages[].options.deliveryTimeWindow.to.minute</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Minute when the time window opens when used in the <code>from</code> property or closes when used in the <code>to</code> property.</td>\n</tr>\n<tr>\n<td><em>messages[].options.campaignReferenceId</em></td>\n<td>String</td>\n<td>ID that allows you to track, analyze, and show an aggregated overview and the performance of individual campaigns per sending channel.</td>\n</tr>\n<tr>\n<td><em>messages[].webhooks</em></td>\n<td>Object</td>\n<td>Provides options for configuring message webhooks.</td>\n</tr>\n<tr>\n<td><em>messages[].webhooks.delivery</em></td>\n<td>Object</td>\n<td>Provides options for configuring the delivery report behavior.</td>\n</tr>\n<tr>\n<td><em>messages[].webhooks.delivery.url</em></td>\n<td>String</td>\n<td>The URL on your call back server where a delivery report will be sent. If your URL becomes unavailable then the retry cycle uses the following formula: <code>1min + (1min * retryNumber * retryNumber)</code>.</td>\n</tr>\n<tr>\n<td><em>messages[].webhooks.delivery.intermediateReport</em></td>\n<td>Boolean</td>\n<td>The real-time intermediate delivery report containing GSM error codes, messages status, pricing, network and country codes, etc., which will be sent on your callback server. Defaults to <code>false</code>.</td>\n</tr>\n<tr>\n<td><em>messages[].webhooks.delivery.notify</em></td>\n<td>Boolean</td>\n<td>Notify enables you to specify your preferences for receiving DLRs. If set to false, no DLR will be sent. Note: When no webhook is specified in the request and notify is set to 'true' or not defined, your Subscription settings will apply.</td>\n</tr>\n<tr>\n<td><em>messages[].webhooks.contentType</em></td>\n<td>String</td>\n<td>Preferred delivery report content type, <code>application/json</code> or <code>application/xml</code>.</td>\n</tr>\n<tr>\n<td><em>messages[].webhooks.callbackData</em></td>\n<td>String</td>\n<td>Additional data that can be used for identifying, managing, or monitoring a message. Data included here will also be automatically included in the message Delivery Report. The maximum value is 4000 characters.</td>\n</tr>\n<tr>\n<td><em>messages[].ips</em></td>\n<td>Object</td>\n<td>IP options per message.</td>\n</tr>\n<tr>\n<td><em>messages[].ips.ipPoolId</em></td>\n<td>String</td>\n<td>The ID of the IP pool that will be used to send the email.</td>\n</tr>\n<tr>\n<td><em>messages[].placeholdersMasking</em></td>\n<td>Array</td>\n<td>Options to full or partially mask placeholders.</td>\n</tr>\n<tr>\n<td><em>messages[].placeholdersMasking[].name</em></td>\n<td>String</td>\n<td><strong>Required.</strong> The placeholder name that needs to be masked.</td>\n</tr>\n<tr>\n<td><em>messages[].placeholdersMasking[].side</em></td>\n<td>String</td>\n<td>The side from which characters should be hidden. Options are <code>L</code> (left) or <code>R</code> (right).</td>\n</tr>\n<tr>\n<td><em>messages[].placeholdersMasking[].maskChar</em></td>\n<td>String</td>\n<td>The character used to replace the masked placeholders, e.g., <code>*</code>, <code>+</code>.</td>\n</tr>\n<tr>\n<td><em>messages[].placeholdersMasking[].visibleChars</em></td>\n<td>Int</td>\n<td>The number of characters to leave visible. Ignored if a delimiter is specified. Defaults to 0 (i.e., all characters hidden) if not specified.</td>\n</tr>\n<tr>\n<td><em>messages[].placeholdersMasking[].delimiter</em></td>\n<td>String</td>\n<td>Optional delimiter character (e.g., <code>@</code>, <code>/</code>). When specified, masking applies only to the part of the placeholder before or after the delimiter, depending on the <code>side</code> value. If this is set, the <code>visibleChars</code> field is ignored.</td>\n</tr>\n<tr>\n<td><em>messages[].placeholdersMasking[].skipChars</em></td>\n<td>Array</td>\n<td>A list of characters that should not be masked, even if they fall within the masked region. For example, if we want to mask <code>(385)-9134849</code> into <code>(***)-********</code>, we should include the characters <code>(</code>,<code>)</code> and <code>-</code> in this list to preserve the formatting. In this case, only digits will be masked while parentheses and dashes remain visible.</td>\n</tr>\n<tr>\n<td><em>messages[].storage</em></td>\n<td>Object</td>\n<td>Email storage options per message.</td>\n</tr>\n<tr>\n<td><em>messages[].storage.skipPassive</em></td>\n<td>Boolean</td>\n<td>Set to true to skip passive email storage (long-term storage used for compliance, legal, or audit purposes). If <code>false</code> or not set, the account-level setting is used.</td>\n</tr>\n<tr>\n<td><em>messages[].storage.skipActive</em></td>\n<td>Boolean</td>\n<td>Set to true to skip active email storage (short-term storage used for troubleshooting or support). If <code>false</code> or not set, the account-level setting is used.</td>\n</tr>\n<tr>\n<td><em>options</em></td>\n<td>Object</td>\n<td>Options applicable to all messages in the request.</td>\n</tr>\n<tr>\n<td><em>options.schedule</em></td>\n<td>Object</td>\n<td>Options for scheduling a message.</td>\n</tr>\n<tr>\n<td><em>options.schedule.bulkId</em></td>\n<td>String</td>\n<td>Unique ID assigned to the request if messaging multiple recipients or sending multiple messages via a single API request. If not provided, it will be auto-generated and returned in the API response.</td>\n</tr>\n<tr>\n<td><em>options.schedule.sendAt</em></td>\n<td>String</td>\n<td>Date and time when the message is to be sent. Used for scheduled messages. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSSZ</code>, and can only be scheduled for no later than 5 days in advance.</td>\n</tr>\n<tr>\n<td><em>options.tracking</em></td>\n<td>Object</td>\n<td>Sets up URL shortening and tracking feature.</td>\n</tr>\n<tr>\n<td><em>options.tracking.track</em></td>\n<td>Boolean</td>\n<td>Enable or disable open and click tracking. Passing true will only enable tracking and the statistics will be visible in the web interface alone. This can be explicitly overridden by <code>trackClicks</code> and <code>trackOpens</code>.</td>\n</tr>\n<tr>\n<td><em>options.tracking.trackOpens</em></td>\n<td>Boolean</td>\n<td>This parameter enables or disables track open feature.</td>\n</tr>\n<tr>\n<td><em>options.tracking.trackClicks</em></td>\n<td>Boolean</td>\n<td>This parameter enables or disables track click feature.</td>\n</tr>\n<tr>\n<td><em>options.tracking.trackingUrl</em></td>\n<td>String</td>\n<td>The URL on your callback server on which the open and click notifications will be sent. See Tracking Notifications for details.</td>\n</tr>\n<tr>\n<td><em>options.tracking.trackingPixelPosition</em></td>\n<td>String</td>\n<td>This parameter specifies the position of the open tracking pixel within the email content. Allowed values are <code>TOP</code> and <code>BOTTOM</code>. If no value is provided, the default is <code>TOP</code>.</td>\n</tr>\n<tr>\n<td><em>options.clientPriority</em></td>\n<td>String</td>\n<td>Client priority set on request. Must be 'HIGH', 'STANDARD' or 'LOW'. One of: <code>HIGH</code>, <code>STANDARD</code>, <code>LOW</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>. Invalid requests return <code>400</code> with the list of <code>violations</code>, missing or invalid credentials <code>401</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>Unique ID assigned to the request if messaging multiple recipients or sending multiple messages via a single API request. If not provided, it will be auto-generated and returned in the API response. Typically used for fetching delivery reports and message logs.</td>\n</tr>\n<tr>\n<td><em>messages</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> An array of message objects of a single message or multiple messages sent under one bulk ID.</td>\n</tr>\n<tr>\n<td><em>messages[].messageId</em></td>\n<td>String</td>\n<td>Unique message ID. If not provided, it will be auto-generated and returned in the API response.</td>\n</tr>\n<tr>\n<td><em>messages[].status</em></td>\n<td>Object</td>\n<td>Indicates the status of the message and how to recover from an error should there be any.</td>\n</tr>\n<tr>\n<td><em>messages[].status.groupId</em></td>\n<td>Int</td>\n<td>Status group ID.</td>\n</tr>\n<tr>\n<td><em>messages[].status.groupName</em></td>\n<td>String</td>\n<td>Status group name that describes which category the status code belongs to, i.e., PENDING, UNDELIVERABLE, DELIVERED, EXPIRED, REJECTED. One of: <code>ACCEPTED</code>, <code>PENDING</code>, <code>UNDELIVERABLE</code>, <code>DELIVERED</code>, <code>EXPIRED</code>, <code>REJECTED</code>.</td>\n</tr>\n<tr>\n<td><em>messages[].status.id</em></td>\n<td>Int</td>\n<td>Status code ID.</td>\n</tr>\n<tr>\n<td><em>messages[].status.name</em></td>\n<td>String</td>\n<td>Status code name.</td>\n</tr>\n<tr>\n<td><em>messages[].status.description</em></td>\n<td>String</td>\n<td>Human-readable description of the status.</td>\n</tr>\n<tr>\n<td><em>messages[].status.action</em></td>\n<td>String</td>\n<td>Action to take to recover from the error.</td>\n</tr>\n<tr>\n<td><em>messages[].destination</em></td>\n<td>String</td>\n<td>The destination address of the message, i.e., its recipient.</td>\n</tr>\n<tr>\n<td><em>messages[].details</em></td>\n<td>Object</td>\n<td>Other details of the message.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Errors use the common format: <code>errorCode</code>, <code>description</code>, <code>action</code>, <code>violations[]</code> (<code>property</code>, <code>violation</code>).</p>\n","urlObject":{"protocol":"https","path":["email","4","messages"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[],"_postman_id":"994c3726-e269-4cb1-a250-1e34a9d5adf7"},{"name":"Get sent email bulks","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","if (!(pm.environment.get(\"emailBulkId\") || \"\")) { skip(\"emailBulkId is not set\"); } else {","waitUntil(function (cb) { api(\"GET\", \"/email/1/bulks?bulkId=\" + pm.environment.get(\"emailBulkId\"), null, function (e, r) { cb(r && r.code === 200); }); }, 12, 3000, function () {});","}"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","",""],"type":"text/javascript","packages":{}}}],"id":"4ad58667-07cb-4e82-9100-7c4cdac77c90","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/email/1/bulks?bulkId={{emailBulkId}}","description":"<p>REQUEST RATE LIMIT:</p>\n<p>1000 requests / second (per account)</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>Bulk ID for which report is requested.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["email","1","bulks"],"host":["go2","vhdmedia","se"],"query":[{"description":{"content":"<p>Required. The ID of the bulk, returned when the messages were sent.</p>\n","type":"text/plain"},"key":"bulkId","value":"{{emailBulkId}}"}],"variable":[]}},"response":[{"id":"54a015cf-fc15-40dd-9b9a-80d9c82c25e6","name":"Get sent email bulks","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/email/1/bulks?bulkId={{bulkId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["email","1","bulks"],"query":[{"key":"bulkId","value":"{{bulkId}}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Date","value":"Thu, 04 May 2023 15:01:09 GMT"},{"key":"Content-Type","value":"application/json;charset=utf-8"},{"key":"Server","value":"SMS API"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"X-Request-Id","value":"1683212469479510255"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"externalBulkId\": \"customBulkId1\",\n    \"bulks\": [\n        {\n            \"bulkId\": \"2038774678111\",\n            \"sendAt\": \"2023-05-04T16:00:00.087+0000\"\n        },\n        {\n            \"bulkId\": \"2038770383111\",\n            \"sendAt\": \"2023-05-04T23:00:00.207+0000\"\n        }\n    ]\n}"}],"_postman_id":"4ad58667-07cb-4e82-9100-7c4cdac77c90"},{"name":"Get sent email bulks status","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","",""],"type":"text/javascript","packages":{}}}],"id":"bbbbf884-98a3-4e37-97b3-77e8e2d1201f","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[],"url":"https://go2.vhdmedia.se/email/1/bulks/status?bulkId={{emailBulkId}}","description":"<p>REQUEST RATE LIMIT:</p>\n<p>1000 requests / second (per account)</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>Bulk ID for which report is requested.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["email","1","bulks","status"],"host":["go2","vhdmedia","se"],"query":[{"description":{"content":"<p>Required. The ID of the bulk, returned when the messages were sent.</p>\n","type":"text/plain"},"key":"bulkId","value":"{{emailBulkId}}"}],"variable":[]}},"response":[{"id":"fc37ab8c-ba96-4ea7-8485-d24d6e5ce205","name":"Get sent email bulks status","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://go2.vhdmedia.se/email/1/bulks/status?bulkId={{bulkId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["email","1","bulks","status"],"query":[{"key":"bulkId","value":"{{bulkId}}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"vary","value":"Origin"},{"key":"vary","value":"Access-Control-Request-Method"},{"key":"vary","value":"Access-Control-Request-Headers"},{"key":"date","value":"Thu, 04 May 2023 15:14:54 GMT"},{"key":"content-type","value":"application/json;charset=utf-8"},{"key":"server","value":"SMS API"},{"key":"transfer-encoding","value":"chunked"},{"key":"x-request-id","value":"1683213294451564254"},{"key":"strict-transport-security","value":"max-age=31536000; includeSubDomains; preload;"},{"key":"connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"externalBulkId\": \"customBulkId1\",\n    \"bulks\": [\n        {\n            \"bulkId\": \"2038774678111\",\n            \"status\": \"PENDING\"\n        },\n        {\n            \"bulkId\": \"2038770383111\",\n            \"status\": \"PENDING\"\n        }\n    ]\n}"}],"_postman_id":"bbbbf884-98a3-4e37-97b3-77e8e2d1201f"},{"name":"Update scheduled Email messages status","event":[{"listen":"prerequest","script":{"exec":["var bulk = pm.environment.get(\"emailBulkId\");","var base = \"https://go2.vhdmedia.se/email/1/bulks/status?bulkId=\" + encodeURIComponent(bulk);","var headers = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\" };","","function currentStatus(res) {","    var json = res.json();","    return (json.bulks && json.bulks[0]) ? json.bulks[0].status : json.status;","}","// Email status changes take a few seconds to apply: wait until the status is what we expect.","function waitFor(wanted, tries, done) {","    pm.sendRequest({ url: base, method: \"GET\", header: headers }, function (err, res) {","        var current = (!err && res.code === 200) ? currentStatus(res) : null;","        if (current === wanted || tries <= 0) { done(); }","        else { setTimeout(function () { waitFor(wanted, tries - 1, done); }, 2000); }","    });","}","","// A bulk cannot be set to PAUSED when it is already PAUSED. If it is paused now,","// resume it first, so this request can pause it again and every run ends in PAUSED.","pm.sendRequest({ url: base, method: \"GET\", header: headers }, function (err, res) {","    if (err || res.code !== 200 || currentStatus(res) !== \"PAUSED\") { return; }","    pm.sendRequest({","        url: base, method: \"PUT\",","        header: Object.assign({ \"Content-Type\": \"application/json\" }, headers),","        body: { mode: \"raw\", raw: JSON.stringify({ status: \"PENDING\" }) }","    }, function () { waitFor(\"PENDING\", 10, function () {}); });","});",""],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"bulkId\", \"status\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});"],"type":"text/javascript","packages":{}}}],"id":"a305f3aa-c5d9-4d02-ab48-d14efd3c0d38","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\"status\":\"PAUSED\"}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/email/1/bulks/status?bulkId={{emailBulkId}}","description":"<p>REQUEST RATE LIMIT:</p>\n<p>1000 requests / second (per account)</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>Bulk ID for which report is requested.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>status</em></td>\n<td>String</td>\n<td>Required  <br />  <br />Enum: \"PENDING\" \"PAUSED\" \"PROCESSING\" \"CANCELED\" \"FINISHED\" \"FAILED\"</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["email","1","bulks","status"],"host":["go2","vhdmedia","se"],"query":[{"description":{"content":"<p>Required. The ID of the bulk, returned when the messages were sent.</p>\n","type":"text/plain"},"key":"bulkId","value":"{{emailBulkId}}"}],"variable":[]}},"response":[{"id":"f9b30844-3c79-4945-9288-8318645b1452","name":"Canceled","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\"status\":\"CANCELED\"}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/email/1/bulks/status?bulkId={{bulkId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["email","1","bulks","status"],"query":[{"key":"bulkId","value":"{{bulkId}}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Date","value":"Thu, 04 May 2023 15:19:01 GMT"},{"key":"Content-Type","value":"application/json;charset=utf-8"},{"key":"Server","value":"SMS API"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"X-Request-Id","value":"1683213541957590255"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"bulkId\": \"customBulkId1\",\n    \"status\": \"CANCELED\"\n}"}],"_postman_id":"a305f3aa-c5d9-4d02-ab48-d14efd3c0d38"},{"name":"Reschedule Email messages","event":[{"listen":"prerequest","script":{"exec":["var bulk = pm.environment.get(\"emailBulkId\");","var base = \"https://go2.vhdmedia.se/email/1/bulks/status?bulkId=\" + encodeURIComponent(bulk);","var headers = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\" };","","function currentStatus(res) {","    var json = res.json();","    return (json.bulks && json.bulks[0]) ? json.bulks[0].status : json.status;","}","// Email status changes take a few seconds to apply: wait until the status is what we expect.","function waitFor(wanted, tries, done) {","    pm.sendRequest({ url: base, method: \"GET\", header: headers }, function (err, res) {","        var current = (!err && res.code === 200) ? currentStatus(res) : null;","        if (current === wanted || tries <= 0) { done(); }","        else { setTimeout(function () { waitFor(wanted, tries - 1, done); }, 2000); }","    });","}","","// Schedule the email 7 days from now (UTC). Emails can be scheduled up to 30 days ahead.","var d = new Date(Date.now() + 7 * 24 * 60 * 60 * 1000);","function p(n) { return (\"0\" + n).slice(-2); }","pm.environment.set(\"sendAt\", d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) +","    \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\");","","// A bulk can only be rescheduled while it is PAUSED: wait until the pause has been applied.","waitFor(\"PAUSED\", 10, function () {","    // give the platform a moment to apply the pause everywhere before rescheduling","    setTimeout(function () {}, 4000);","});",""],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"bulkId\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});"],"type":"text/javascript","packages":{}}}],"id":"5adfab95-d6f1-4b6f-94b7-549d74eba06b","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n  \"sendAt\": \"{{sendAt}}\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/email/1/bulks?bulkId={{emailBulkId}}","description":"<blockquote>\n<p><strong>Pause first.</strong> A scheduled bulk can only be rescheduled while its status is <code>PAUSED</code>. Call <strong>Update scheduled Email messages status</strong> with <code>{\"status\": \"PAUSED\"}</code> first; otherwise the request fails (for example <code>409 Conflict</code> for SMS or <code>404 Not Found</code> for email). Set the status back to <code>PENDING</code> to resume sending.</p>\n</blockquote>\n<p>REQUEST RATE LIMIT:</p>\n<p>1000 requests / second (per account)</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>Bulk ID for which report is requested.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>sendAt</td>\n<td>String</td>\n<td>Required  <br /></td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["email","1","bulks"],"host":["go2","vhdmedia","se"],"query":[{"description":{"content":"<p>Required. The ID of the bulk, returned when the messages were sent.</p>\n","type":"text/plain"},"key":"bulkId","value":"{{emailBulkId}}"}],"variable":[]}},"response":[{"id":"8670693c-a18c-4af8-a788-3252a5e066f7","name":"Reschedule Email messages","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\"sendAt\":\"2023-05-04T17:00:00.085-00:00\"}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/email/1/bulks?bulkId={{bulkId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["email","1","bulks"],"query":[{"key":"bulkId","value":"{{bulkId}}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"vary","value":"Origin"},{"key":"vary","value":"Access-Control-Request-Method"},{"key":"vary","value":"Access-Control-Request-Headers"},{"key":"date","value":"Thu, 04 May 2023 15:12:38 GMT"},{"key":"content-type","value":"application/json;charset=utf-8"},{"key":"server","value":"SMS API"},{"key":"transfer-encoding","value":"chunked"},{"key":"x-request-id","value":"1683213158345979254"},{"key":"strict-transport-security","value":"max-age=31536000; includeSubDomains; preload;"},{"key":"connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"bulkId\": \"customBulkId1\",\n    \"sendAt\": \"2023-05-04T17:00:00.085+0000\"\n}"}],"_postman_id":"5adfab95-d6f1-4b6f-94b7-549d74eba06b"},{"name":"Cancel the scheduled email","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","if (!(pm.environment.get(\"emailBulkId\") || \"\")) { skip(\"emailBulkId is not set\"); } else {","// a status change takes a few seconds to apply: wait until the bulk is paused, then cancel","waitUntil(function (cb) { api(\"GET\", \"/email/1/bulks/status?bulkId=\" + pm.environment.get(\"emailBulkId\"), null, function (e, r) { var j = jsonOf(r) || {}; cb(j.bulks && j.bulks[0] && j.bulks[0].status === \"PAUSED\"); }); }, 12, 2500, function () {});","}"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests for Cancel the scheduled email.","pm.test(\"Status code is 200\", function () { pm.expect(pm.response.code).to.eql(200); });","pm.test(\"The bulk is canceled, so nothing is ever sent\", function () { pm.expect(pm.response.json().status).to.eql(\"CANCELED\"); });"],"type":"text/javascript","packages":{}}}],"id":"787b322f-327c-4048-a7d4-9254b23d00d7","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n  \"status\": \"CANCELED\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/email/1/bulks/status?bulkId={{emailBulkId}}","description":"<p>Cancel a scheduled email bulk so the emails are never sent.</p>\n<p>REQUEST RATE LIMIT:</p>\n<p>1000 requests / second (per account)</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>bulkId</em></td>\n<td>String</td>\n<td>Bulk ID for which report is requested.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>status</em></td>\n<td>String</td>\n<td>Required  <br />  <br />Enum: \"PENDING\" \"PAUSED\" \"PROCESSING\" \"CANCELED\" \"FINISHED\" \"FAILED\"</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["email","1","bulks","status"],"host":["go2","vhdmedia","se"],"query":[{"description":{"content":"<p>Required. The ID of the bulk, returned when the messages were sent.</p>\n","type":"text/plain"},"key":"bulkId","value":"{{emailBulkId}}"}],"variable":[]}},"response":[],"_postman_id":"787b322f-327c-4048-a7d4-9254b23d00d7"}],"id":"59499ad0-d161-42e9-8d7e-561caf5f5254","description":"<p>View, reschedule, pause, or cancel emails that were scheduled with <code>sendAt</code>. Each request needs the <code>bulkId</code> of the scheduled send. A bulk can only be rescheduled while its status is <code>PAUSED</code>.</p>\n<blockquote>\n<p><strong>Running these requests.</strong> The flow schedules its own email, pauses and reschedules it, and cancels it at the end. No setup is needed, and nothing is ever sent.</p>\n</blockquote>\n","_postman_id":"59499ad0-d161-42e9-8d7e-561caf5f5254"}],"id":"2a9b3800-f312-4cb8-b498-4ee3638a1fc7","description":"<h1 id=\"introduction\">Introduction</h1>\n<p>This documentation will help you get started using email API</p>\n<p>Email nowadays plays an essential part in everyone’s daily business communication, and it is important to have it included in your business applications as well, either as a standalone service, or as part of our OMNI solution.</p>\n<p>In this brief introduction, we will provide instructions on how to set up everything that will enable you to send emails over our platform in no time.</p>\n<p>Our email service will allow you to send HTML emails, add attachments and view delivery reports to reach an ever increasing number of your clients directly, through our API, as explained in the next steps.</p>\n<h2 id=\"choose-your-domain-carefully\">Choose your domain carefully</h2>\n<p>The most important step in this initial stage is choosing the way you would like to route your emails.</p>\n<p>Individuals and organizations often use email as their primary means of communication. However, most users recently have started complaining about their inboxes being flooded with unsolicited bulk emails or spam emails. No technique is a complete solution to the spam problem, and each has trade-offs between incorrectly rejecting legitimate email (false positives) and not rejecting all spam (false negatives). This is why the domain reputation rating system was introduced - recognizing potential threats for emails sent out from the domain, based on what was sent from it in the past.</p>\n<p>Since the domain reputation is affected by the type of emails being sent from it, once the domain is classified as 'bad' (possibly due to a generally negative impact from sending bulk type emails) - it is very hard to restore its reputation fully.</p>\n<p>It may be a good idea to separate the domains based on the type of messages that you are planning to send. For example: use different domains/subdomains for each type of email that you are intending to send (transactional, corporate, marketing, etc.) to keep the reputation levels separate.</p>\n<h2 id=\"register-your-domain-with-us\">Register your domain with us</h2>\n<p>For this step, you need to have access to your domain’s DNS configuration. Please, contact us with your preferred domain so we can integrate it within our platform. You will receive additional instructions (DNS configuration) on how to establish a proper communication channel between your domain and our platform.</p>\n<p>Once the configuration is properly applied, you can follow the steps outlined in the following pages to successfully send emails.</p>\n<p>If you have any questions regarding the service integration, please contact us.</p>\n<h2 id=\"email-template-creation-guide\"><strong>Email Template Creation Guide</strong></h2>\n<p>To facilitate the process of sending emails using templates, follow the steps below to create an email template on the VHD web platform:</p>\n<ol>\n<li><strong>Login:</strong> Access the VHD web platform by logging in to your account.</li>\n<li><strong>Navigate to Templates:</strong> Once logged in, go to the \"Moments/Templates/Broadcast Templates\" section.</li>\n<li><strong>Initiate Template Creation:</strong> Select the option create new template.</li>\n<li><strong>Choose Email Channel:</strong> Specify the communication channel as \"Email\" for the template you are creating.</li>\n<li><strong>Select Sender:</strong> Choose the appropriate sender account.</li>\n<li><strong>Template Design:</strong> Create the content of your template or choose an existing template.</li>\n<li><strong>Save Template:</strong> After finalizing the template, save your work to ensure all changes are retained.</li>\n<li>Note the templateId, templateId's are the numbers followed by #.</li>\n<li>Now use <a href=\"https://dev.vhdmedia.se/#bdf08bd6-ac17-4a5b-abee-3cf3350b1ab7\">Fully featured email</a> API</li>\n<li>Add the templateId to send email templates.</li>\n</ol>\n","_postman_id":"2a9b3800-f312-4cb8-b498-4ee3638a1fc7"},{"name":"PEOPLE","item":[{"name":"PERSON PROFILE","item":[{"name":"Create a new person","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","(function () {","    var calls = [\"/people/2/persons?identifier=janewilliams@example.com&type=EMAIL\", \"/people/2/persons?identifier=janesmith@example.com&type=EMAIL\", \"/people/2/persons?identifier=john.doe@example.com&type=EMAIL\", \"/people/2/persons?identifier=jane.work@example.com&type=EMAIL\", \"/people/2/persons?identifier=jane.home@example.com&type=EMAIL\", \"/people/2/persons?identifier=sample-3&type=EXTERNAL_ID\"];","    (function next(i) { if (i >= calls.length) { return; } api(\"DELETE\", calls[i], null, function () { next(i + 1); }); })(0);","})();"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Test if response status code is 200","pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});","","// Check if response body is not empty before trying to parse it","pm.test(\"Response body is not empty\", function () {","    pm.expect(pm.response.text()).to.not.be.empty;","});","","// Attempt to parse response body as JSON","var responseBody;","try {","    responseBody = pm.response.json(); // Attempt to parse response body as JSON","} catch (error) {","    console.log(\"Error parsing response body as JSON:\", error);","}","","// Test if response is a valid JSON object only if the response status is 200","if (pm.response.code === 200) {","    pm.test(\"Response is a valid JSON object\", function () {","        pm.expect(responseBody).to.be.an('object');","    });","","    // Validate response properties","    pm.test(\"Response contains 'createdAt' and 'modifiedAt'\", function () {","        pm.expect(responseBody).to.have.property('createdAt');","        pm.expect(responseBody).to.have.property('modifiedAt');","    });","","    pm.test(\"Response contains 'id' as a number\", function () {","        pm.expect(responseBody).to.have.property('id').that.is.a('number');","    });","","    pm.test(\"Response 'firstName' and 'lastName' match the request\", function () {","        var sent = JSON.parse(pm.request.body.raw);","        pm.expect(responseBody.firstName).to.equal(sent.firstName);","        pm.expect(responseBody.lastName).to.equal(sent.lastName);","    });","","    pm.test(\"Response contains 'contactInformation'\", function () {","        pm.expect(responseBody).to.have.property('contactInformation').that.is.an('object');","    });","","    pm.test(\"Response contains the phone and email that were sent\", function () {","        var sentContact = JSON.parse(pm.request.body.raw).contactInformation || {};","        ['phone', 'email'].forEach(function (kind) {","            if (sentContact[kind]) {","                pm.expect(responseBody.contactInformation).to.have.property(kind).that.is.an('array').with.lengthOf(sentContact[kind].length);","            }","        });","    });","","    pm.test(\"Response 'type', 'origin', and 'modifiedFrom' are valid\", function () {","        pm.expect(responseBody).to.have.property('type', 'CUSTOMER');","        pm.expect(responseBody).to.have.property('origin', 'API');","        pm.expect(responseBody).to.have.property('modifiedFrom', 'API');","    });","}","","// Log the response for debugging","console.log(\"Response Body:\", responseBody);","",""],"type":"text/javascript","packages":{}}}],"id":"fb9740cd-3fbc-42b4-b782-71a2af83404a","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"firstName\": \"Jane\",\n  \"lastName\": \"Smith\",\n  \"contactInformation\": {\n    \"email\": [\n      {\n        \"address\": \"janewilliams@example.com\"\n      }\n    ],\n    \"phone\": [\n      {\n        \"number\": \"4670123456\"\n      }\n    ]\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/persons","description":"<p>Use this method to create a new person.</p>\n<h3 id=\"request-rate-limit\">Request rate limit</h3>\n<p>10 requests / second (per account)</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>address</td>\n<td>string</td>\n<td>Person's address, 256 characters max</td>\n</tr>\n<tr>\n<td>birthDate</td>\n<td>string</td>\n<td>Person's date of birth, format YYYY-MM-DD</td>\n</tr>\n<tr>\n<td>city</td>\n<td>string</td>\n<td>Person's city, 50 characters max</td>\n</tr>\n<tr>\n<td>computedAttributes  <br />{  <br />  <br />  <br />  <br />  <br />  <br />property name*  <br />{ }  <br />  <br />  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />  <br />  <br />  <br />object</td>\n<td>Person's computed attributes grouped by type</td>\n</tr>\n<tr>\n<td>contactInformation  <br />{  <br />  <br />  <br />  <br />  <br />  <br />email  <br />[{  <br />  <br />  <br />  <br />  <br />address  <br />  <br />  <br />  <br />  <br />}] ,  <br />  <br />  <br />  <br />phone  <br />[{  <br />  <br />  <br />  <br />  <br />number  <br />  <br />  <br />}] ,  <br />  <br />  <br />facebook  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />instagram  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />liveChat  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />telegram  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />viberBots  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />twitter  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />webpush  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />registrationId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />},  <br />  <br />additionalData  <br />{  <br />  <br />property name  <br />  <br />  <br />},  <br />  <br />push  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />registrationId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />},  <br />  <br />additionalData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />appleBusinessChat  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />line  <br />[{  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}]  <br />  <br />}  <br />  <br />  <br /></td>\n<td>object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />object  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br /></td>\n<td>Required  <br />  <br />List of phones, emails and other information how a person can be contacted  <br />  <br />  <br />A list of person's email addresses. Max 100 emails per person.  <br />  <br />  <br />  <br />  <br />Person's email address. Must comply with the email format and cannot exceed 255characters. One person can have up to 100 email addresses.  <br />  <br />  <br />  <br />  <br />  <br />A list of person's phone numbers. Max 100 numbers per person.  <br />  <br />  <br />  <br />  <br />Person's phone number. Must be in international format and cannot exceed 50 characters. One person can have up to 100 phone numbers.  <br />  <br />  <br />A list of person's Facebook destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Instagram destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Live Chat destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's telegram destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Viber Bots destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's twitter destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's web push registrations  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Push registration ID  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />Additional data collected from the destination  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's push registrations  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Push registration ID  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />Additional data collected from the destination  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Apple Business Chat destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Line destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br /></td>\n</tr>\n<tr>\n<td>country</td>\n<td>string</td>\n<td>Person's country, 50 characters max</td>\n</tr>\n<tr>\n<td>customAttributes  <br />{  <br />  <br />  <br />property name*  <br />{ }  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />object</td>\n<td>List of custom attributes for the person, 4096 characters max per value</td>\n</tr>\n<tr>\n<td>externalId</td>\n<td>string</td>\n<td>Unique ID for a person from your or another external system, 256 characters max</td>\n</tr>\n<tr>\n<td>firstName</td>\n<td>string</td>\n<td>Person's first name, 255 characters max</td>\n</tr>\n<tr>\n<td>gender</td>\n<td>string</td>\n<td>Enum: \"MALE\" \"FEMALE\"  <br />Person's gender</td>\n</tr>\n<tr>\n<td>integrations  <br />{  <br />  <br />salesforce  <br />{  <br />  <br />  <br />contactId  <br />  <br />  <br />leadId  <br />  <br />  <br />}  <br />}</td>\n<td>object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />string  <br />  <br />  <br />string  <br /></td>\n<td>Integrations  <br />  <br />  <br />Salesforce integration  <br />  <br />  <br />  <br />Salesforce contact id  <br />  <br />  <br />Salesforce lead id</td>\n</tr>\n<tr>\n<td>lastName</td>\n<td>string</td>\n<td>Person's last name, 255 characters max</td>\n</tr>\n<tr>\n<td>middleName</td>\n<td>string</td>\n<td>Person's middle name, 50 characters max</td>\n</tr>\n<tr>\n<td>profilePicture</td>\n<td>string</td>\n<td>URL for the person's profile picture, 2083 characters max</td>\n</tr>\n<tr>\n<td>tags</td>\n<td>array of  <br />strings</td>\n<td>List of tags that this person has</td>\n</tr>\n<tr>\n<td>type</td>\n<td>string</td>\n<td>Enum: \"CUSTOMER\" \"LEAD\"  <br />Person's type, default type is CUSTOMER</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<p>Default sucessful response</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>address</td>\n<td>string</td>\n<td>Person's address, 256 characters max</td>\n</tr>\n<tr>\n<td>birthDate</td>\n<td>string</td>\n<td>Person's date of birth, format YYYY-MM-DD</td>\n</tr>\n<tr>\n<td>city</td>\n<td>string</td>\n<td>Person's city, 50 characters max</td>\n</tr>\n<tr>\n<td>computedAttributes  <br />{  <br />  <br />  <br />  <br />  <br />  <br />property name*  <br />{ }  <br />  <br />  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />  <br />  <br />  <br />object</td>\n<td>Person's computed attributes grouped by type</td>\n</tr>\n<tr>\n<td>contactInformation  <br />{  <br />  <br />  <br />  <br />  <br />  <br />email  <br />[{  <br />  <br />  <br />  <br />  <br />address  <br />  <br />  <br />  <br />  <br />}] ,  <br />  <br />  <br />  <br />phone  <br />[{  <br />  <br />  <br />  <br />  <br />number  <br />  <br />  <br />}] ,  <br />  <br />  <br />facebook  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />instagram  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />liveChat  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />telegram  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />viberBots  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />twitter  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />webpush  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />registrationId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />},  <br />  <br />additionalData  <br />{  <br />  <br />property name  <br />  <br />  <br />},  <br />  <br />push  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />registrationId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />},  <br />  <br />additionalData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />appleBusinessChat  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />line  <br />[{  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}]  <br />  <br />}  <br />  <br />  <br /></td>\n<td>object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />object  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br /></td>\n<td>Required  <br />  <br />List of phones, emails and other information how a person can be contacted  <br />  <br />  <br />A list of person's email addresses. Max 100 emails per person.  <br />  <br />  <br />  <br />  <br />Person's email address. Must comply with the email format and cannot exceed 255characters. One person can have up to 100 email addresses.  <br />  <br />  <br />  <br />  <br />  <br />A list of person's phone numbers. Max 100 numbers per person.  <br />  <br />  <br />  <br />  <br />Person's phone number. Must be in international format and cannot exceed 50 characters. One person can have up to 100 phone numbers.  <br />  <br />  <br />A list of person's Facebook destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Instagram destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Live Chat destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's telegram destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Viber Bots destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's twitter destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's web push registrations  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Push registration ID  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />Additional data collected from the destination  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's push registrations  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Push registration ID  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />Additional data collected from the destination  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Apple Business Chat destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Line destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br /></td>\n</tr>\n<tr>\n<td>country</td>\n<td>string</td>\n<td>Person's country, 50 characters max</td>\n</tr>\n<tr>\n<td>customAttributes  <br />{  <br />  <br />  <br />property name*  <br />{ }  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />object</td>\n<td>List of custom attributes for the person, 4096 characters max per value</td>\n</tr>\n<tr>\n<td>externalId</td>\n<td>string</td>\n<td>Unique ID for a person from your or another external system, 256 characters max</td>\n</tr>\n<tr>\n<td>firstName</td>\n<td>string</td>\n<td>Person's first name, 255 characters max</td>\n</tr>\n<tr>\n<td>gender</td>\n<td>string</td>\n<td>Enum: \"MALE\" \"FEMALE\"  <br />Person's gender</td>\n</tr>\n<tr>\n<td>integrations  <br />{  <br />  <br />salesforce  <br />{  <br />  <br />  <br />contactId  <br />  <br />  <br />leadId  <br />  <br />  <br />}  <br />}</td>\n<td>object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />string  <br />  <br />  <br />string  <br /></td>\n<td>Integrations  <br />  <br />  <br />Salesforce integration  <br />  <br />  <br />  <br />Salesforce contact id  <br />  <br />  <br />Salesforce lead id</td>\n</tr>\n<tr>\n<td>lastName</td>\n<td>string</td>\n<td>Person's last name, 255 characters max</td>\n</tr>\n<tr>\n<td>middleName</td>\n<td>string</td>\n<td>Person's middle name, 50 characters max</td>\n</tr>\n<tr>\n<td>profilePicture</td>\n<td>string</td>\n<td>URL for the person's profile picture, 2083 characters max</td>\n</tr>\n<tr>\n<td>tags</td>\n<td>array of  <br />strings</td>\n<td>List of tags that this person has</td>\n</tr>\n<tr>\n<td>type</td>\n<td>string</td>\n<td>Enum: \"CUSTOMER\" \"LEAD\"  <br />Person's type, default type is CUSTOMER</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-responses\">Error responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>requestError</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>serviceException</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>Identifier of the error</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Detailed error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-request-fields\">Additional request fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>contactInformation.instagramDm</em></td>\n<td>Array</td>\n<td>A list of person's Instagram DM destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.kakaoSangdam</em></td>\n<td>Array</td>\n<td>A list of person's Kakao Sangdam destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.kakaoTalk</em></td>\n<td>Array</td>\n<td>A list of person's KakaoTalk destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.openChannel</em></td>\n<td>Array</td>\n<td>A list of person's Open Channel destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.push[].isPrimary</em></td>\n<td>Boolean</td>\n<td>Set to true if this device is a primary device of a user among other devices.</td>\n</tr>\n<tr>\n<td><em>contactInformation.tiktokBm</em></td>\n<td>Array</td>\n<td>A list of person's TikTok Business Messaging destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.whatsapp</em></td>\n<td>Array</td>\n<td>A list of person's WhatsApp destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.zaloFollower</em></td>\n<td>Array</td>\n<td>A list of person's Zalo Follower destinations.</td>\n</tr>\n<tr>\n<td><em>createdAt</em></td>\n<td>String</td>\n<td>Date and time of creation. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td><em>modifiedAt</em></td>\n<td>String</td>\n<td>Date and time of last modification. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td><em>modifiedFrom</em></td>\n<td></td>\n<td>The information which describes the source of the last modification of record.</td>\n</tr>\n<tr>\n<td><em>origin</em></td>\n<td></td>\n<td>The information which describes the origin of the record.</td>\n</tr>\n<tr>\n<td><em>preferredLanguage</em></td>\n<td>String</td>\n<td>Person's preferred language. Must be in two letter ISO (xx) or language-region BCP-47 (xx-YY) format.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-response-fields\">Additional response fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>contactInformation.instagramDm</em></td>\n<td>Array</td>\n<td>A list of person's Instagram DM destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.kakaoSangdam</em></td>\n<td>Array</td>\n<td>A list of person's Kakao Sangdam destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.kakaoTalk</em></td>\n<td>Array</td>\n<td>A list of person's KakaoTalk destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.openChannel</em></td>\n<td>Array</td>\n<td>A list of person's Open Channel destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.push[].isPrimary</em></td>\n<td>Boolean</td>\n<td>Set to true if this device is a primary device of a user among other devices.</td>\n</tr>\n<tr>\n<td><em>contactInformation.tiktokBm</em></td>\n<td>Array</td>\n<td>A list of person's TikTok Business Messaging destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.whatsapp</em></td>\n<td>Array</td>\n<td>A list of person's WhatsApp destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.zaloFollower</em></td>\n<td>Array</td>\n<td>A list of person's Zalo Follower destinations.</td>\n</tr>\n<tr>\n<td><em>createdAt</em></td>\n<td>String</td>\n<td>Date and time of creation. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td><em>modifiedAt</em></td>\n<td>String</td>\n<td>Date and time of last modification. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td><em>modifiedFrom</em></td>\n<td></td>\n<td>The information which describes the source of the last modification of record.</td>\n</tr>\n<tr>\n<td><em>origin</em></td>\n<td></td>\n<td>The information which describes the origin of the record.</td>\n</tr>\n<tr>\n<td><em>preferredLanguage</em></td>\n<td>String</td>\n<td>Person's preferred language. Must be in two letter ISO (xx) or language-region BCP-47 (xx-YY) format.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["people","2","persons"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"086c1d7a-ab71-4591-b187-0e438893d054","name":"Create a new person simple","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"firstName\": \"Jane\",\n  \"lastName\": \"Smith\",\n  \"contactInformation\": {\n    \"email\": [\n      {\n        \"address\": \"janewilliams@example.com\"\n      }\n    ],\n     \"phone\": [\n      {\n        \"number\": \"4670123456\"\n      }\n    ]\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/persons"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"278"},{"key":"Date","value":"Wed, 17 May 2023 13:47:52 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684331272845080836"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"createdAt\": \"2023-05-17T13:47:52\",\n    \"modifiedAt\": \"2023-05-17T13:47:52\",\n    \"id\": 45,\n    \"firstName\": \"Jane\",\n    \"lastName\": \"Smith\",\n    \"type\": \"CUSTOMER\",\n    \"origin\": \"API\",\n    \"modifiedFrom\": \"API\",\n    \"contactInformation\": {\n        \"phone\": [\n            {\n                \"number\": \"4670123456\"\n            }\n        ],\n        \"email\": [\n            {\n                \"address\": \"janewilliams@example.com\"\n            }\n        ]\n    }\n}"},{"id":"14521613-a718-4a38-b1f4-37c3001fb579","name":"Create a new person full list","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n\"firstName\": \"John\",\n\"lastName\": \"Doe\",\n\"address\": \"67 Farringdon Road\",\n\"city\": \"Uppsala\",\n\"country\": \"Sweden\",\n\"gender\": \"MALE\",\n\"birthDate\": \"1966-01-15\",\n\"middleName\": \"Janie\",\n\"profilePicture\": \"http://profile.com\",\n\"origin\": \"API\",\n\"modifiedFrom\": \"API\",\n\"tags\": [\n\"VIP Customers\",\n\"New Customers\"\n],\n\"customAttributes\": {\n\"Contract Expiry\": \"2023-06-30\",\n\"Company\": \"Example\",\n\"ShoppingCartList\": [\n{\n\"productName\": \"Sneakers\",\n\"productPrice\": 25.33,\n\"productCategory\": \"Sport Sneakers\",\n\"productImage\": \"/image1.png\"\n},\n{\n\"productName\": \"T-Shirt\",\n\"productPrice\": 9.99,\n\"productCategory\": \"Casual\",\n\"productImage\": \"/image2.png\"\n}\n]\n},\n\"contactInformation\": {\n\"phone\": [\n{\n\"number\": \"4670123456\"\n}\n],\n\"email\": [\n{\n\"address\": \"johndoe@wxample.com\"\n}\n],\n\"push\": [\n{\n\"applicationId\": \"FDCC8516470A3AE97FB8AC218D5D0D3D\",\n\"registrationId\": \"c5db0c47-465c-4e1c-abf8-7cedc275dd19\",\n\"additionalData\": {\n\"birthdate\": \"1988-07-31\",\n\"email\": \"test@test.com\",\n\"firstName\": \"John\",\n\"gender\": \"M\",\n\"lastName\": \"Doe\",\n\"middleName\": \"Janie\"\n},\n\"systemData\": {\n\"cloudType\": \"GCM\",\n\"registrationEnabled\": true,\n\"sdkName\": \"MobileMessaging SDK\",\n\"os\": \"Android\"\n}\n}\n],\n\"facebook\": [\n{\n\"applicationId\": \"370329180020364\",\n\"userId\": \"2094832040560427\",\n\"systemData\": {\n\"gender\": \"male\",\n\"lastName\": \"Doe\",\n\"firstName\": \"John\"\n}\n}\n],\n\"line\": [\n{\n\"applicationId\": \"1644264921\",\n\"userId\": \"U045147f1ad961bfe996b72bbf417f3c9\",\n\"systemData\": {\n\"displayName\": \"John Doe\"\n}\n}\n],\n\"instagram\": [\n{\n\"applicationId\": \"17841446795352028\",\n\"userId\": \"12461436693342628\",\n\"systemData\": {\n\"displayName\": \"john.doe\"\n}\n}\n],\n\"twitter\": [\n{\n\"applicationId\": \"1148203323283877\",\n\"userId\": \"370329180020364\",\n\"systemData\": {\n\"displayName\": \"John Doe\"\n}\n}\n]\n}\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/persons"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"878"},{"key":"Date","value":"Wed, 17 May 2023 12:10:04 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684325404495123830"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"createdAt\": \"2023-05-17T12:10:04\",\n    \"modifiedAt\": \"2023-05-17T12:10:04\",\n    \"id\": 44,\n    \"firstName\": \"John\",\n    \"lastName\": \"Doe\",\n    \"type\": \"CUSTOMER\",\n    \"address\": \"67 Farringdon Road\",\n    \"city\": \"Uppsala\",\n    \"country\": \"Sweden\",\n    \"gender\": \"MALE\",\n    \"birthDate\": \"1966-01-15\",\n    \"middleName\": \"Janie\",\n    \"profilePicture\": \"http://profile.com\",\n    \"origin\": \"API\",\n    \"modifiedFrom\": \"API\",\n    \"tags\": [\n        \"VIP Customers\",\n        \"New Customers\"\n    ],\n    \"customAttributes\": {\n        \"Contract Expiry\": \"2023-06-30\",\n        \"Company\": \"Example\",\n        \"ShoppingCartList\": [\n            {\n                \"__id\": \"619ee046-d435-4b04-8445-9c9b67f1ffbd\",\n                \"productCategory\": \"Sport Sneakers\",\n                \"productImage\": \"/image1.png\",\n                \"productName\": \"Sneakers\",\n                \"productPrice\": 25.33\n            },\n            {\n                \"__id\": \"1ed808bc-b9a8-40ab-ba24-b712cdab183d\",\n                \"productCategory\": \"Casual\",\n                \"productImage\": \"/image2.png\",\n                \"productName\": \"T-Shirt\",\n                \"productPrice\": 9.99\n            }\n        ]\n    },\n    \"contactInformation\": {\n        \"phone\": [\n            {\n                \"number\": \"4670123456\"\n            }\n        ],\n        \"email\": [\n            {\n                \"address\": \"johndoe@wxample.com\"\n            }\n        ]\n    }\n}"}],"_postman_id":"fb9740cd-3fbc-42b4-b782-71a2af83404a"},{"name":"Get a single person or a list of people","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","",""],"type":"text/javascript","packages":{}}}],"id":"56f9acaa-9368-4da5-972a-b3e270c062a7","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[],"url":"https://go2.vhdmedia.se/people/2/persons?identifier=janewilliams@example.com&type=EMAIL","description":"<p>Use this method with a query parameter to get a single person. If the query parameter is not specified, this method will return a list of people.</p>\n<h3 id=\"request-rate-limit\">Request rate limit</h3>\n<p>5 requests / second (per account)</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>phone</em></td>\n<td>string</td>\n<td>Example: phone=46701234567  <br />Person’s phone number. Phone numbers must be in international format.</td>\n</tr>\n<tr>\n<td>email</td>\n<td>string</td>\n<td>Example: email=<a href=\"mailto:name@example.com\">name@example.com</a>  <br />Person’s email address. Must comply with the email format and cannot exceed 255 characters. One person can have up to 100 email addresses.</td>\n</tr>\n<tr>\n<td>externalId</td>\n<td>string</td>\n<td>Example: externalId=6F9619FF-8B86-D011-B42D-00CF4FC964FF  <br />Unique ID for a person from your or another external system.</td>\n</tr>\n<tr>\n<td>pushRegistrationId</td>\n<td>string</td>\n<td>Example: pushRegistrationId=6F9619FF-8B86-D011-B42D-00CF4FC964FF  <br />Person's push registration ID.</td>\n</tr>\n<tr>\n<td>id</td>\n<td>ineger</td>\n<td>Example: id=11351351  <br />Person's internal ID.</td>\n</tr>\n<tr>\n<td>lineId</td>\n<td>string</td>\n<td>Example: lineId=U045147f1ad961bfe996b72bbf417f3c9  <br />Person’s Line ID. To get person by Line OTT channel, you need to specify both lineId and lineSenderId parameters.</td>\n</tr>\n<tr>\n<td>lineSenderId</td>\n<td>string</td>\n<td>Example: lineSenderId=1644264921  <br />Person’s Line sender ID. To get person by Line OTT channel, you need to specify both lineId and lineSenderId parameter</td>\n</tr>\n<tr>\n<td>facebookId</td>\n<td>string</td>\n<td>Example: facebookId=370329180020364  <br />Person’s Facebook ID. To get person by Facebook OTT channel, you need to specify both facebookId and facebookSenderId parameters.</td>\n</tr>\n<tr>\n<td>facebookSenderId</td>\n<td>integer</td>\n<td>Example: facebookSenderId=2094832040560427  <br />Person’s Facebook sender ID. To get person by Facebook OTT channel, you need to specify both facebookId and facebookSenderId parameters.</td>\n</tr>\n<tr>\n<td>telegramUserId</td>\n<td>string</td>\n<td>Example: telegramUserId=1303201999  <br />Person’s Telegram user ID. To get person by Telegram OTT channel, you need to specify both telegramUserId and telegramBotId parameters.</td>\n</tr>\n<tr>\n<td>telegramBotId</td>\n<td>string</td>\n<td>Example: telegramBotId=1495032701  <br />Person’s Telegram bot ID. To get person by Telegram OTT channel, you need to specify both telegramUserId and telegramBotId parameters.</td>\n</tr>\n<tr>\n<td>viberBotUserId</td>\n<td>string</td>\n<td>Example: viberBotUserId=Upk26V/i1GXfvxZ8S41P/w==  <br />Person’s Viber Bot user ID. To get person by Viber Bot OTT channel, you need to specify both viberBotUserId and viberBotId parameters.</td>\n</tr>\n<tr>\n<td>viberBotId</td>\n<td><br />integer</td>\n<td>Example: viberBotId=5591458813882487336  <br />Person’s Viber Bot ID. To get person by Viber Bot OTT channel, you need to specify both viberBotUserId and viberBotId parameters.</td>\n</tr>\n<tr>\n<td>instagramId</td>\n<td>string</td>\n<td>Example: instagramId=17841546155331428  <br />Person’s Instagram user ID. To get person by Instagram channel, you need to specify both instagramId and instagramSenderId parameters.</td>\n</tr>\n<tr>\n<td>instagramSenderId</td>\n<td>integer</td>\n<td>Example: instagramSenderId=17841405793187218  <br />Person’s Instagram sender ID. To get person by Instagram channel, you need to specify both instagramId and instagramSenderId parameters.</td>\n</tr>\n<tr>\n<td>twitterId</td>\n<td>string</td>\n<td>example: twitterId=370329180020364  <br />Person’s Twitter user ID. To get person by Twitter channel, you need to specify both twitterId and twitterSenderId parameters.</td>\n</tr>\n<tr>\n<td>twitterSenderId</td>\n<td>integer</td>\n<td>Example: twitterSenderId=10765432100123456789  <br />Person’s Twitter sender ID. To get person by Twitter channel, you need to specify both twitterId and twitterSenderId parameters.</td>\n</tr>\n<tr>\n<td>appleBusinessChatId</td>\n<td>string</td>\n<td>Example: appleBusinessChatId=ef6ca8e9-3718-4dc9-a9a0-b4ac28d135ca  <br />Person’s Apple Business Chat ID. To get person by Apple BC channel, you need to specify both appleBusinessChatId and appleBusinessChatSenderId parameters.</td>\n</tr>\n<tr>\n<td>appleBusinessChatSenderId</td>\n<td>string</td>\n<td>Example: appleBusinessChatSenderId=urn:mbid:AQAAYyUbut3B2E3T9GLv4EaF/  <br />Person’s Apple Business Chat sender ID. To get person by Apple BC channel, you need to specify both appleBusinessChatId and appleBusinessChatSenderId parameters.</td>\n</tr>\n<tr>\n<td>liveChatRegId</td>\n<td>string</td>\n<td>Example: liveChatRegId=79f9701b-e350-4497-9689-b2257864e63f</td>\n</tr>\n<tr>\n<td>limit</td>\n<td>integer</td>\n<td>Example: limit=20  <br />Maximum number of rows returned per page.</td>\n</tr>\n<tr>\n<td>page</td>\n<td>integer</td>\n<td>Example: page=1  <br />This parameter says which results page you want to get. If both page and limit appear, then page rows are skipped before starting to count the limit rows that are returned.</td>\n</tr>\n<tr>\n<td>includeTotalCount</td>\n<td>boolean</td>\n<td>Example: includeTotalCount=false  <br />Returns total count of persons, if set to true.</td>\n</tr>\n<tr>\n<td>orderBy</td>\n<td>string</td>\n<td>Example: orderBy=modifiedAt:desc  <br />Results ordering. Possible ordering fields are firstName, lastName, createdAt and modifiedAt. Ordering direction can be specified with modifiers asc for the ascending ordering or desc for the descending one</td>\n</tr>\n<tr>\n<td>filter</td>\n<td>string</td>\n<td>Example: filter={\"#and\":[{\"firstName\":\"Alex\"},{\"#contains\": { \"tags\":\"VIP Client\"}}]}}  <br />Allows to filter persons using simple queries. Just pass to the parameter URL encoded query</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"list-of-supported-logical-operators\">List of supported logical operators:</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Logical Operator</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>#and</code></td>\n<td>Joins query clauses with a logical AND returns all records that match the conditions of both clauses.</td>\n</tr>\n<tr>\n<td><code>#or</code></td>\n<td>Joins query clauses with a logical OR returns all records that match the conditions of either clause.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"list-of-supported-comparison-operators\">List of supported comparison operators:</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Comparison Operator</th>\n<th>Supported Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>#eq</code></td>\n<td>string, integer, decimal, date</td>\n<td>Matches values that are equal to a specified value.</td>\n</tr>\n<tr>\n<td><code>#ne</code></td>\n<td>string, integer, decimal, date</td>\n<td>Matches all values that are not equal to a specified value.</td>\n</tr>\n<tr>\n<td><code>#contains</code></td>\n<td>string</td>\n<td>Matches the records that contain a specified value.</td>\n</tr>\n<tr>\n<td><code>#startsWith</code></td>\n<td>string</td>\n<td>Matches the records that start with a specified value.</td>\n</tr>\n<tr>\n<td><code>#endsWith</code></td>\n<td>string</td>\n<td>Matches the records that end with a specified value.</td>\n</tr>\n<tr>\n<td><code>#gt</code></td>\n<td>integer, decimal, date</td>\n<td>Matches values that are greater than a specified value.</td>\n</tr>\n<tr>\n<td><code>#lt</code></td>\n<td>integer, decimal, date</td>\n<td>Matches values that are less than a specified value.</td>\n</tr>\n<tr>\n<td><code>#gte</code></td>\n<td>integer, decimal, date</td>\n<td>Matches values that are greater than or equal to a specified value.</td>\n</tr>\n<tr>\n<td><code>#lte</code></td>\n<td>integer, decimal, date</td>\n<td>Matches values that are less than or equal to a specified value.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"paging-and-ordering\">Paging and ordering</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>limit</code></td>\n<td>int</td>\n<td>If a limit count is given, no more than that many rows will be returned (possibly less, if the query itself yields fewer rows). The default value is 20. The maximum value is 1000.</td>\n</tr>\n<tr>\n<td><code>page</code></td>\n<td>int</td>\n<td>This parameter says to skip that many rows before beginning to return rows. If both page and limit appear, then page rows are skipped before starting to count the limit rows that are returned. The default value is 1.</td>\n</tr>\n<tr>\n<td><code>orderBy</code></td>\n<td>string</td>\n<td>This parameter is used to order your results. If an order is not given, the default order <code>modifiedAt:desc</code> will be applied.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"responses\">Responses</h3>\n<p>Default sucessful response</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>address</td>\n<td>string</td>\n<td>Person's address, 256 characters max</td>\n</tr>\n<tr>\n<td>birthDate</td>\n<td>string</td>\n<td>Person's date of birth, format YYYY-MM-DD</td>\n</tr>\n<tr>\n<td>city</td>\n<td>string</td>\n<td>Person's city, 50 characters max</td>\n</tr>\n<tr>\n<td>computedAttributes  <br />{  <br />  <br />  <br />  <br />  <br />  <br />property name*  <br />{ }  <br />  <br />  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />  <br />  <br />  <br />object</td>\n<td>Person's computed attributes grouped by type</td>\n</tr>\n<tr>\n<td>contactInformation  <br />{  <br />  <br />  <br />  <br />  <br />  <br />email  <br />[{  <br />  <br />  <br />  <br />  <br />address  <br />  <br />  <br />  <br />  <br />}] ,  <br />  <br />  <br />  <br />phone  <br />[{  <br />  <br />  <br />  <br />  <br />number  <br />  <br />  <br />}] ,  <br />  <br />  <br />facebook  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />instagram  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />liveChat  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />telegram  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />viberBots  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />twitter  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />webpush  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />registrationId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />},  <br />  <br />additionalData  <br />{  <br />  <br />property name  <br />  <br />  <br />},  <br />  <br />push  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />registrationId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />},  <br />  <br />additionalData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />appleBusinessChat  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />line  <br />[{  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}]  <br />  <br />}  <br />  <br />  <br /></td>\n<td>object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />object  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br /></td>\n<td>Required  <br />  <br />List of phones, emails and other information how a person can be contacted  <br />  <br />  <br />A list of person's email addresses. Max 100 emails per person.  <br />  <br />  <br />  <br />  <br />Person's email address. Must comply with the email format and cannot exceed 255characters. One person can have up to 100 email addresses.  <br />  <br />  <br />  <br />  <br />  <br />A list of person's phone numbers. Max 100 numbers per person.  <br />  <br />  <br />  <br />  <br />Person's phone number. Must be in international format and cannot exceed 50 characters. One person can have up to 100 phone numbers.  <br />  <br />  <br />A list of person's Facebook destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Instagram destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Live Chat destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's telegram destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Viber Bots destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's twitter destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's web push registrations  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Push registration ID  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />Additional data collected from the destination  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's push registrations  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Push registration ID  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />Additional data collected from the destination  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Apple Business Chat destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Line destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br /></td>\n</tr>\n<tr>\n<td>country</td>\n<td>string</td>\n<td>Person's country, 50 characters max</td>\n</tr>\n<tr>\n<td>customAttributes  <br />{  <br />  <br />  <br />property name*  <br />{ }  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />object</td>\n<td>List of custom attributes for the person, 4096 characters max per value</td>\n</tr>\n<tr>\n<td>externalId</td>\n<td>string</td>\n<td>Unique ID for a person from your or another external system, 256 characters max</td>\n</tr>\n<tr>\n<td>firstName</td>\n<td>string</td>\n<td>Person's first name, 255 characters max</td>\n</tr>\n<tr>\n<td>gender</td>\n<td>string</td>\n<td>Enum: \"MALE\" \"FEMALE\"  <br />Person's gender</td>\n</tr>\n<tr>\n<td>integrations  <br />{  <br />  <br />salesforce  <br />{  <br />  <br />  <br />contactId  <br />  <br />  <br />leadId  <br />  <br />  <br />}  <br />}</td>\n<td>object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />string  <br />  <br />  <br />string  <br /></td>\n<td>Integrations  <br />  <br />  <br />Salesforce integration  <br />  <br />  <br />  <br />Salesforce contact id  <br />  <br />  <br />Salesforce lead id</td>\n</tr>\n<tr>\n<td>lastName</td>\n<td>string</td>\n<td>Person's last name, 255 characters max</td>\n</tr>\n<tr>\n<td>middleName</td>\n<td>string</td>\n<td>Person's middle name, 50 characters max</td>\n</tr>\n<tr>\n<td>profilePicture</td>\n<td>string</td>\n<td>URL for the person's profile picture, 2083 characters max</td>\n</tr>\n<tr>\n<td>tags</td>\n<td>array of  <br />strings</td>\n<td>List of tags that this person has</td>\n</tr>\n<tr>\n<td>type</td>\n<td>string</td>\n<td>Enum: \"CUSTOMER\" \"LEAD\"  <br />Person's type, default type is CUSTOMER</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-responses\">Error responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>requestError</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>serviceException</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>Identifier of the error</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Detailed error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-parameters\">Additional parameters</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>identifier</em></td>\n<td>String</td>\n<td>Person ID. ID type must match the <code>type</code> parameter. Some channels (e,g., Apple Business Chat) use identifiers that contain unsafe characters. Make sure you URL-encode them in your API request</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-response-fields\">Additional response fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>contactInformation.instagramDm</em></td>\n<td>Array</td>\n<td>A list of person's Instagram DM destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.kakaoSangdam</em></td>\n<td>Array</td>\n<td>A list of person's Kakao Sangdam destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.kakaoTalk</em></td>\n<td>Array</td>\n<td>A list of person's KakaoTalk destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.openChannel</em></td>\n<td>Array</td>\n<td>A list of person's Open Channel destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.push[].isPrimary</em></td>\n<td>Boolean</td>\n<td>Set to true if this device is a primary device of a user among other devices.</td>\n</tr>\n<tr>\n<td><em>contactInformation.tiktokBm</em></td>\n<td>Array</td>\n<td>A list of person's TikTok Business Messaging destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.whatsapp</em></td>\n<td>Array</td>\n<td>A list of person's WhatsApp destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.zaloFollower</em></td>\n<td>Array</td>\n<td>A list of person's Zalo Follower destinations.</td>\n</tr>\n<tr>\n<td><em>modifiedFrom</em></td>\n<td></td>\n<td>The information which describes the source of the last modification of record.</td>\n</tr>\n<tr>\n<td><em>origin</em></td>\n<td></td>\n<td>The information which describes the origin of the record.</td>\n</tr>\n<tr>\n<td><em>preferredLanguage</em></td>\n<td>String</td>\n<td>Person's preferred language. Must be in two letter ISO (xx) or language-region BCP-47 (xx-YY) format.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["people","2","persons"],"host":["go2","vhdmedia","se"],"query":[{"key":"identifier","value":"janewilliams@example.com"},{"key":"type","value":"EMAIL"}],"variable":[]}},"response":[{"id":"24a6d5af-05f0-4b66-a03e-7037f7e4dd14","name":"Get a list of people","originalRequest":{"method":"GET","header":[],"url":"https://go2.vhdmedia.se/people/2/persons"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"7476"},{"key":"Date","value":"Mon, 08 May 2023 12:43:51 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1683549832709629227"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"limit\": 20,\n    \"page\": 1,\n    \"orderBy\": \"modifiedAt:desc, id:asc\",\n    \"persons\": [\n        {\n            \"createdAt\": \"2023-02-02T13:24:37\",\n            \"modifiedAt\": \"2023-02-02T13:25:47\",\n            \"id\": 1118,\n            \"firstName\": \"Jane\",\n            \"type\": \"CUSTOMER\",\n            \"origin\": \"PORTAL\",\n            \"modifiedFrom\": \"PORTAL\",\n            \"contactInformation\": {\n                \"phone\": [\n                    {\n                        \"number\": \"4670123456\"\n                    }\n                ]\n            }\n        },\n        {\n            \"createdAt\": \"2018-02-15T18:24:29\",\n            \"modifiedAt\": \"2023-01-21T13:40:27\",\n            \"id\": 9,\n            \"firstName\": \"Jane\",\n            \"lastName\": \"Smith\",\n            \"type\": \"CUSTOMER\",\n            \"address\": \"2021-12-01 2022-04-30\",\n            \"origin\": \"PORTAL\",\n            \"modifiedFrom\": \"PORTAL\",\n            \"tags\": [\n                \"Test23\"\n            ],\n            \"customAttributes\": {\n                \"personal_code\": \"keyvqblf6bw\"\n            },\n            \"contactInformation\": {\n                \"phone\": [\n                    {\n                        \"number\": \"4670123456\"\n                    }\n                ],\n                \"email\": [\n                    {\n                        \"address\": \"jane.smith@vhdmedia.se\"\n                    }\n                ],\n                \"push\": [\n                    {\n                        \"applicationId\": \"9565CC313BC4E294950FC8A624\",\n                        \"registrationId\": \"56C5233A-05E2-4E69BE71357B\",\n                        \"systemData\": {\n                            \"os\": \"Android\",\n                            \"osLanguage\": \"sv\",\n                            \"geofencingSdk\": true,\n                            \"deviceTimezoneOffset\": \"GMT+01:00\",\n                            \"appVersion\": \"3.1.0\",\n                            \"deviceSecure\": true,\n                            \"deviceModel\": \"SM-F721B\",\n                            \"sdkVersion\": \"7.1.0\",\n                            \"deviceManufacturer\": \"samsung\",\n                            \"deviceName\": \"Jans Z Flip4\",\n                            \"registrationEnabled\": true,\n                            \"osVersion\": \"13\",\n                            \"cloudType\": \"GCM\",\n                            \"notificationsEnabled\": true\n                        },\n                        \"isPrimary\": false\n                    }\n                ]\n            }\n        },\n        \n \n        {\n            \"createdAt\": \"2018-02-15T18:24:29\",\n            \"modifiedAt\": \"2021-11-17T08:34:14\",\n            \"id\": 7,\n            \"firstName\": \"Jim\",\n            \"lastName\": \"Dole\",\n            \"type\": \"CUSTOMER\",\n            \"address\": \"2021-12-01 2022-04-30\",\n            \"city\": \"75550 Uppsala\",\n            \"country\": \"Sweden\",\n            \"origin\": \"PORTAL\",\n            \"modifiedFrom\": \"PORTAL\",\n            \"tags\": [\n                \"Office\",\n                \"Upload_2018-03-13_16:06:29\",\n                \"Upload_2018-03-14_11:24:47\"\n            ],\n            \"customAttributes\": {\n                \"Code\": 46,\n                \"personal_code\": \"70123456\",\n                \"Countrycode\": \"46\"\n            },\n            \"contactInformation\": {\n                \"phone\": [\n                    {\n                        \"number\": \"4670123456\"\n                    }\n                ],\n                \"email\": [\n                    {\n                        \"address\": \"jim@vhdmedia.se\"\n                    }\n                ]\n            }\n        }\n        \n        \n      \n       \n    ]\n}"},{"id":"a3fe23a0-ed1c-4fba-8477-0aefc29b800e","name":"Get a single person","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://go2.vhdmedia.se/people/2/persons?email=janewilliams@vhdmeida.com","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","2","persons"],"query":[{"key":"email","value":"janewilliams@vhdmeida.com"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"vary","value":"Origin"},{"key":"vary","value":"Access-Control-Request-Method"},{"key":"vary","value":"Access-Control-Request-Headers"},{"key":"access-control-allow-origin","value":"*"},{"key":"access-control-allow-methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"access-control-allow-headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"content-type","value":"application/json;charset=UTF-8"},{"key":"content-length","value":"637"},{"key":"date","value":"Wed, 10 May 2023 09:23:52 GMT"},{"key":"server","value":"SMS API"},{"key":"x-request-id","value":"1683710633252971162"},{"key":"strict-transport-security","value":"max-age=31536000; includeSubDomains; preload;"},{"key":"connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"createdAt\": \"2023-05-08T15:00:54\",\n    \"modifiedAt\": \"2023-05-10T09:16:44\",\n    \"id\": 4,\n    \"firstName\": \"Jane\",\n    \"lastName\": \"Smith\",\n    \"type\": \"CUSTOMER\",\n    \"origin\": \"API\",\n    \"modifiedFrom\": \"API\",\n    \"customAttributes\": {\n        \"Company\": \"VHD\",\n        \"ShoppingCartList\": [\n            {\n                \"__id\": \"d980c585-e7e8-4e6b-868e-b82d6b4f2bdf\",\n                \"productName\": \"Sneakers\",\n                \"productImage\": \"/image1.png\",\n                \"productPrice\": 25.33,\n                \"productCategory\": \"Sport Sneakers\"\n            },\n            {\n                \"__id\": \"07f89266-9a6f-4998-b22c-778e01c94814\",\n                \"productName\": \"T-Shirt\",\n                \"productImage\": \"/image2.png\",\n                \"productPrice\": 9.99,\n                \"productCategory\": \"Casual\"\n            }\n        ],\n        \"Contract Expiry\": \"2023-06-01\"\n    },\n    \"contactInformation\": {\n        \"email\": [\n            {\n                \"address\": \"janewilliams@vhdmeida.com\"\n            }\n        ]\n    }\n}"}],"_postman_id":"56f9acaa-9368-4da5-972a-b3e270c062a7"},{"name":"Update a person","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"id\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","",""],"type":"text/javascript","packages":{}}}],"id":"8e9b428f-f5bd-4a7a-8e57-8b4a7984c2fb","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"firstName\": \"Jane\",\n  \"lastName\": \"Williams\",\n  \"contactInformation\": {\n    \"email\": [\n      {\n        \"address\": \"janewilliams@example.com\"\n      }\n    ],\n    \"phone\": [\n      {\n        \"number\": \"4670123456\"\n      }\n    ]\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/persons?identifier=janewilliams@example.com&type=EMAIL","description":"<p>Use this method to overwrite a person profile with the data passed in the request body as follows:<br />1. New values for standard and custom profile attributes replace existing values on the profile. If no value is passed in the request, the attribute is set to empty.<br />2. Tags in the request replace the existing profile tags. If no tags are passed, the existing profile tag list is cleared.<br />3. New contact information (email addresses and phone numbers) in the request replaces the current information on the profile.</p>\n<h3 id=\"request-rate-limit\">Request rate limit</h3>\n<p>5 requests / second (per account)</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>phone</em></td>\n<td>string</td>\n<td>Example: phone=46701234567  <br />Person’s phone number. Phone numbers must be in international format.</td>\n</tr>\n<tr>\n<td>email</td>\n<td>string</td>\n<td>Example: email=<a href=\"mailto:name@example.com\">name@example.com</a>  <br />Person’s email address. Must comply with the email format and cannot exceed 255 characters. One person can have up to 100 email addresses.</td>\n</tr>\n<tr>\n<td>externalId</td>\n<td>string</td>\n<td>Example: externalId=6F9619FF-8B86-D011-B42D-00CF4FC964FF  <br />Unique ID for a person from your or another external system.</td>\n</tr>\n<tr>\n<td>pushRegistrationId</td>\n<td>string</td>\n<td>Example: pushRegistrationId=6F9619FF-8B86-D011-B42D-00CF4FC964FF  <br />Person's push registration ID.</td>\n</tr>\n<tr>\n<td>id</td>\n<td>integer</td>\n<td>Example: id=11351351  <br />Person's internal ID.</td>\n</tr>\n<tr>\n<td>lineId</td>\n<td>string</td>\n<td>Example: lineId=U045147f1ad961bfe996b72bbf417f3c9  <br />Person’s Line ID. To get person by Line OTT channel, you need to specify both lineId and lineSenderId parameters.</td>\n</tr>\n<tr>\n<td>lineSenderId</td>\n<td>string</td>\n<td>Example: lineSenderId=1644264921  <br />Person’s Line sender ID. To get person by Line OTT channel, you need to specify both lineId and lineSenderId parameter</td>\n</tr>\n<tr>\n<td>facebookId</td>\n<td>string</td>\n<td>Example: facebookId=370329180020364  <br />Person’s Facebook ID. To get person by Facebook OTT channel, you need to specify both facebookId and facebookSenderId parameters.</td>\n</tr>\n<tr>\n<td>facebookSenderId</td>\n<td>integer</td>\n<td>Example: facebookSenderId=2094832040560427  <br />Person’s Facebook sender ID. To get person by Facebook OTT channel, you need to specify both facebookId and facebookSenderId parameters.</td>\n</tr>\n<tr>\n<td>telegramUserId</td>\n<td>string</td>\n<td>Example: telegramUserId=1303201999  <br />Person’s Telegram user ID. To get person by Telegram OTT channel, you need to specify both telegramUserId and telegramBotId parameters.</td>\n</tr>\n<tr>\n<td>telegramBotId</td>\n<td>string</td>\n<td>Example: telegramBotId=1495032701  <br />Person’s Telegram bot ID. To get person by Telegram OTT channel, you need to specify both telegramUserId and telegramBotId parameters.</td>\n</tr>\n<tr>\n<td>viberBotUserId</td>\n<td>string</td>\n<td>Example: viberBotUserId=Upk26V/i1GXfvxZ8S41P/w==  <br />Person’s Viber Bot user ID. To get person by Viber Bot OTT channel, you need to specify both viberBotUserId and viberBotId parameters.</td>\n</tr>\n<tr>\n<td>viberBotId</td>\n<td><br />integer</td>\n<td>Example: viberBotId=5591458813882487336  <br />Person’s Viber Bot ID. To get person by Viber Bot OTT channel, you need to specify both viberBotUserId and viberBotId parameters.</td>\n</tr>\n<tr>\n<td>instagramId</td>\n<td>string</td>\n<td>Example: instagramId=17841546155331428  <br />Person’s Instagram user ID. To get person by Instagram channel, you need to specify both instagramId and instagramSenderId parameters.</td>\n</tr>\n<tr>\n<td>instagramSenderId</td>\n<td>integer</td>\n<td>Example: instagramSenderId=17841405793187218  <br />Person’s Instagram sender ID. To get person by Instagram channel, you need to specify both instagramId and instagramSenderId parameters.</td>\n</tr>\n<tr>\n<td>twitterId</td>\n<td>string</td>\n<td>example: twitterId=370329180020364  <br />Person’s Twitter user ID. To get person by Twitter channel, you need to specify both twitterId and twitterSenderId parameters.</td>\n</tr>\n<tr>\n<td>twitterSenderId</td>\n<td>integer</td>\n<td>Example: twitterSenderId=10765432100123456789  <br />Person’s Twitter sender ID. To get person by Twitter channel, you need to specify both twitterId and twitterSenderId parameters.</td>\n</tr>\n<tr>\n<td>appleBusinessChatId</td>\n<td>string</td>\n<td>Example: appleBusinessChatId=ef6ca8e9-3718-4dc9-a9a0-b4ac28d135ca  <br />Person’s Apple Business Chat ID. To get person by Apple BC channel, you need to specify both appleBusinessChatId and appleBusinessChatSenderId parameters.</td>\n</tr>\n<tr>\n<td>appleBusinessChatSenderId</td>\n<td>string</td>\n<td>Example: appleBusinessChatSenderId=urn:mbid:AQAAYyUbut3B2E3T9GLv4EaF/  <br />Person’s Apple Business Chat sender ID. To get person by Apple BC channel, you need to specify both appleBusinessChatId and appleBusinessChatSenderId parameters.</td>\n</tr>\n<tr>\n<td>liveChatRegId</td>\n<td>string</td>\n<td>Example: liveChatRegId=79f9701b-e350-4497-9689-b2257864e63f</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>address</td>\n<td>string</td>\n<td>Person's address, 256 characters max</td>\n</tr>\n<tr>\n<td>birthDate</td>\n<td>string</td>\n<td>Person's date of birth, format YYYY-MM-DD</td>\n</tr>\n<tr>\n<td>city</td>\n<td>string</td>\n<td>Person's city, 50 characters max</td>\n</tr>\n<tr>\n<td>computedAttributes  <br />{  <br />  <br />  <br />  <br />  <br />  <br />property name*  <br />{ }  <br />  <br />  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />  <br />  <br />  <br />object</td>\n<td>Person's computed attributes grouped by type</td>\n</tr>\n<tr>\n<td>contactInformation  <br />{  <br />  <br />  <br />  <br />  <br />  <br />email  <br />[{  <br />  <br />  <br />  <br />  <br />address  <br />  <br />  <br />  <br />  <br />}] ,  <br />  <br />  <br />  <br />phone  <br />[{  <br />  <br />  <br />  <br />  <br />number  <br />  <br />  <br />}] ,  <br />  <br />  <br />facebook  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />instagram  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />liveChat  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />telegram  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />viberBots  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />twitter  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />webpush  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />registrationId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />},  <br />  <br />additionalData  <br />{  <br />  <br />property name  <br />  <br />  <br />},  <br />  <br />push  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />registrationId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />},  <br />  <br />additionalData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />appleBusinessChat  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />line  <br />[{  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}]  <br />  <br />}  <br />  <br />  <br /></td>\n<td>object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />object  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br /></td>\n<td>Required  <br />  <br />List of phones, emails and other information how a person can be contacted  <br />  <br />  <br />A list of person's email addresses. Max 100 emails per person.  <br />  <br />  <br />  <br />  <br />Person's email address. Must comply with the email format and cannot exceed 255characters. One person can have up to 100 email addresses.  <br />  <br />  <br />  <br />  <br />  <br />A list of person's phone numbers. Max 100 numbers per person.  <br />  <br />  <br />  <br />  <br />Person's phone number. Must be in international format and cannot exceed 50 characters. One person can have up to 100 phone numbers.  <br />  <br />  <br />A list of person's Facebook destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Instagram destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Live Chat destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's telegram destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Viber Bots destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's twitter destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's web push registrations  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Push registration ID  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />Additional data collected from the destination  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's push registrations  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Push registration ID  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />Additional data collected from the destination  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Apple Business Chat destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Line destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br /></td>\n</tr>\n<tr>\n<td>country</td>\n<td>string</td>\n<td>Person's country, 50 characters max</td>\n</tr>\n<tr>\n<td>customAttributes  <br />{  <br />  <br />  <br />property name*  <br />{ }  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />object</td>\n<td>List of custom attributes for the person, 4096 characters max per value</td>\n</tr>\n<tr>\n<td>externalId</td>\n<td>string</td>\n<td>Unique ID for a person from your or another external system, 256 characters max</td>\n</tr>\n<tr>\n<td>firstName</td>\n<td>string</td>\n<td>Person's first name, 255 characters max</td>\n</tr>\n<tr>\n<td>gender</td>\n<td>string</td>\n<td>Enum: \"MALE\" \"FEMALE\"  <br />Person's gender</td>\n</tr>\n<tr>\n<td>integrations  <br />{  <br />  <br />salesforce  <br />{  <br />  <br />  <br />contactId  <br />  <br />  <br />leadId  <br />  <br />  <br />}  <br />}</td>\n<td>object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />string  <br />  <br />  <br />string  <br /></td>\n<td>Integrations  <br />  <br />  <br />Salesforce integration  <br />  <br />  <br />  <br />Salesforce contact id  <br />  <br />  <br />Salesforce lead id</td>\n</tr>\n<tr>\n<td>lastName</td>\n<td>string</td>\n<td>Person's last name, 255 characters max</td>\n</tr>\n<tr>\n<td>middleName</td>\n<td>string</td>\n<td>Person's middle name, 50 characters max</td>\n</tr>\n<tr>\n<td>profilePicture</td>\n<td>string</td>\n<td>URL for the person's profile picture, 2083 characters max</td>\n</tr>\n<tr>\n<td>tags</td>\n<td>array of  <br />strings</td>\n<td>List of tags that this person has</td>\n</tr>\n<tr>\n<td>type</td>\n<td>string</td>\n<td>Enum: \"CUSTOMER\" \"LEAD\"  <br />Person's type, default type is CUSTOMER</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"responses\">Responses</h3>\n<p>Default sucessful response</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>address</td>\n<td>string</td>\n<td>Person's address, 256 characters max</td>\n</tr>\n<tr>\n<td>birthDate</td>\n<td>string</td>\n<td>Person's date of birth, format YYYY-MM-DD</td>\n</tr>\n<tr>\n<td>city</td>\n<td>string</td>\n<td>Person's city, 50 characters max</td>\n</tr>\n<tr>\n<td>computedAttributes  <br />{  <br />  <br />  <br />  <br />  <br />  <br />property name*  <br />{ }  <br />  <br />  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />  <br />  <br />  <br />object</td>\n<td>Person's computed attributes grouped by type</td>\n</tr>\n<tr>\n<td>contactInformation  <br />{  <br />  <br />  <br />  <br />  <br />  <br />email  <br />[{  <br />  <br />  <br />  <br />  <br />address  <br />  <br />  <br />  <br />  <br />}] ,  <br />  <br />  <br />  <br />phone  <br />[{  <br />  <br />  <br />  <br />  <br />number  <br />  <br />  <br />}] ,  <br />  <br />  <br />facebook  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />instagram  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />liveChat  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />telegram  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />viberBots  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />twitter  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />webpush  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />registrationId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />},  <br />  <br />additionalData  <br />{  <br />  <br />property name  <br />  <br />  <br />},  <br />  <br />push  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />registrationId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />},  <br />  <br />additionalData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />appleBusinessChat  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />line  <br />[{  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}]  <br />  <br />}  <br />  <br />  <br /></td>\n<td>object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />object  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br /></td>\n<td>Required  <br />  <br />List of phones, emails and other information how a person can be contacted  <br />  <br />  <br />A list of person's email addresses. Max 100 emails per person.  <br />  <br />  <br />  <br />  <br />Person's email address. Must comply with the email format and cannot exceed 255characters. One person can have up to 100 email addresses.  <br />  <br />  <br />  <br />  <br />  <br />A list of person's phone numbers. Max 100 numbers per person.  <br />  <br />  <br />  <br />  <br />Person's phone number. Must be in international format and cannot exceed 50 characters. One person can have up to 100 phone numbers.  <br />  <br />  <br />A list of person's Facebook destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Instagram destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Live Chat destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's telegram destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Viber Bots destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's twitter destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's web push registrations  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Push registration ID  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />Additional data collected from the destination  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's push registrations  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Push registration ID  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />Additional data collected from the destination  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Apple Business Chat destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Line destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br /></td>\n</tr>\n<tr>\n<td>country</td>\n<td>string</td>\n<td>Person's country, 50 characters max</td>\n</tr>\n<tr>\n<td>customAttributes  <br />{  <br />  <br />  <br />property name*  <br />{ }  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />object</td>\n<td>List of custom attributes for the person, 4096 characters max per value</td>\n</tr>\n<tr>\n<td>externalId</td>\n<td>string</td>\n<td>Unique ID for a person from your or another external system, 256 characters max</td>\n</tr>\n<tr>\n<td>firstName</td>\n<td>string</td>\n<td>Person's first name, 255 characters max</td>\n</tr>\n<tr>\n<td>gender</td>\n<td>string</td>\n<td>Enum: \"MALE\" \"FEMALE\"  <br />Person's gender</td>\n</tr>\n<tr>\n<td>integrations  <br />{  <br />  <br />salesforce  <br />{  <br />  <br />  <br />contactId  <br />  <br />  <br />leadId  <br />  <br />  <br />}  <br />}</td>\n<td>object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />string  <br />  <br />  <br />string  <br /></td>\n<td>Integrations  <br />  <br />  <br />Salesforce integration  <br />  <br />  <br />  <br />Salesforce contact id  <br />  <br />  <br />Salesforce lead id</td>\n</tr>\n<tr>\n<td>lastName</td>\n<td>string</td>\n<td>Person's last name, 255 characters max</td>\n</tr>\n<tr>\n<td>middleName</td>\n<td>string</td>\n<td>Person's middle name, 50 characters max</td>\n</tr>\n<tr>\n<td>profilePicture</td>\n<td>string</td>\n<td>URL for the person's profile picture, 2083 characters max</td>\n</tr>\n<tr>\n<td>tags</td>\n<td>array of  <br />strings</td>\n<td>List of tags that this person has</td>\n</tr>\n<tr>\n<td>type</td>\n<td>string</td>\n<td>Enum: \"CUSTOMER\" \"LEAD\"  <br />Person's type, default type is CUSTOMER</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-responses\">Error responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>requestError</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>serviceException</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>Identifier of the error</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Detailed error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-parameters\">Additional parameters</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>identifier</em></td>\n<td>String</td>\n<td>Person ID. ID type must match the <code>type</code> parameter. Some channels (e,g., Apple Business Chat) use identifiers that contain unsafe characters. Make sure you URL-encode them in your API request</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-request-fields\">Additional request fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>contactInformation.instagramDm</em></td>\n<td>Array</td>\n<td>A list of person's Instagram DM destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.kakaoSangdam</em></td>\n<td>Array</td>\n<td>A list of person's Kakao Sangdam destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.kakaoTalk</em></td>\n<td>Array</td>\n<td>A list of person's KakaoTalk destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.openChannel</em></td>\n<td>Array</td>\n<td>A list of person's Open Channel destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.push[].isPrimary</em></td>\n<td>Boolean</td>\n<td>Set to true if this device is a primary device of a user among other devices.</td>\n</tr>\n<tr>\n<td><em>contactInformation.tiktokBm</em></td>\n<td>Array</td>\n<td>A list of person's TikTok Business Messaging destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.whatsapp</em></td>\n<td>Array</td>\n<td>A list of person's WhatsApp destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.zaloFollower</em></td>\n<td>Array</td>\n<td>A list of person's Zalo Follower destinations.</td>\n</tr>\n<tr>\n<td><em>createdAt</em></td>\n<td>String</td>\n<td>Date and time of creation. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td><em>modifiedAt</em></td>\n<td>String</td>\n<td>Date and time of last modification. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td><em>modifiedFrom</em></td>\n<td></td>\n<td>The information which describes the source of the last modification of record.</td>\n</tr>\n<tr>\n<td><em>origin</em></td>\n<td></td>\n<td>The information which describes the origin of the record.</td>\n</tr>\n<tr>\n<td><em>preferredLanguage</em></td>\n<td>String</td>\n<td>Person's preferred language. Must be in two letter ISO (xx) or language-region BCP-47 (xx-YY) format.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-response-fields\">Additional response fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>contactInformation.instagramDm</em></td>\n<td>Array</td>\n<td>A list of person's Instagram DM destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.kakaoSangdam</em></td>\n<td>Array</td>\n<td>A list of person's Kakao Sangdam destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.kakaoTalk</em></td>\n<td>Array</td>\n<td>A list of person's KakaoTalk destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.openChannel</em></td>\n<td>Array</td>\n<td>A list of person's Open Channel destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.push[].isPrimary</em></td>\n<td>Boolean</td>\n<td>Set to true if this device is a primary device of a user among other devices.</td>\n</tr>\n<tr>\n<td><em>contactInformation.tiktokBm</em></td>\n<td>Array</td>\n<td>A list of person's TikTok Business Messaging destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.whatsapp</em></td>\n<td>Array</td>\n<td>A list of person's WhatsApp destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.zaloFollower</em></td>\n<td>Array</td>\n<td>A list of person's Zalo Follower destinations.</td>\n</tr>\n<tr>\n<td><em>createdAt</em></td>\n<td>String</td>\n<td>Date and time of creation. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td><em>modifiedAt</em></td>\n<td>String</td>\n<td>Date and time of last modification. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td><em>modifiedFrom</em></td>\n<td></td>\n<td>The information which describes the source of the last modification of record.</td>\n</tr>\n<tr>\n<td><em>origin</em></td>\n<td></td>\n<td>The information which describes the origin of the record.</td>\n</tr>\n<tr>\n<td><em>preferredLanguage</em></td>\n<td>String</td>\n<td>Person's preferred language. Must be in two letter ISO (xx) or language-region BCP-47 (xx-YY) format.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["people","2","persons"],"host":["go2","vhdmedia","se"],"query":[{"key":"identifier","value":"janewilliams@example.com"},{"key":"type","value":"EMAIL"}],"variable":[]}},"response":[{"id":"02f14ac8-6450-4b78-8bf8-a95dfb4a250f","name":"Update a person","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n  \"firstName\": \"Jane\",\n  \"lastName\": \"Smith\",\n  \"customAttributes\": {\n    \"Contract Expiry\": \"2023-06-01\",\n    \"Company\": \"VHD\",\n    \"ShoppingCartList\": [\n      {\n        \"productName\": \"Sneakers\",\n        \"productPrice\": 25.33,\n        \"productCategory\": \"Sport Sneakers\",\n        \"productImage\": \"/image1.png\"\n      },\n      {\n        \"productName\": \"T-Shirt\",\n        \"productPrice\": 9.99,\n        \"productCategory\": \"Casual\",\n        \"productImage\": \"/image2.png\"\n      }\n    ]\n  },\n  \"contactInformation\": {\n    \"email\": [\n      {\n        \"address\": \"janewilliams@vhdmeida.com\"\n      }\n    ]\n  }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/2/persons?email=janewilliams@vhdmeida.com","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","2","persons"],"query":[{"key":"email","value":"janewilliams@vhdmeida.com"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"vary","value":"Origin"},{"key":"vary","value":"Access-Control-Request-Method"},{"key":"vary","value":"Access-Control-Request-Headers"},{"key":"access-control-allow-origin","value":"*"},{"key":"access-control-allow-methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"access-control-allow-headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"content-type","value":"application/json;charset=UTF-8"},{"key":"content-length","value":"637"},{"key":"date","value":"Wed, 10 May 2023 09:16:43 GMT"},{"key":"server","value":"SMS API"},{"key":"x-request-id","value":"1683710204041349836"},{"key":"strict-transport-security","value":"max-age=31536000; includeSubDomains; preload;"},{"key":"connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"createdAt\": \"2023-05-08T15:00:54\",\n    \"modifiedAt\": \"2023-05-10T09:16:44\",\n    \"id\": 4,\n    \"firstName\": \"Jane\",\n    \"lastName\": \"Smith\",\n    \"type\": \"CUSTOMER\",\n    \"origin\": \"API\",\n    \"modifiedFrom\": \"API\",\n    \"customAttributes\": {\n        \"Contract Expiry\": \"2023-06-01\",\n        \"Company\": \"VHD\",\n        \"ShoppingCartList\": [\n            {\n                \"__id\": \"d980c585-e7e8-4e6b-868e-b82d6b4f2bdf\",\n                \"productCategory\": \"Sport Sneakers\",\n                \"productImage\": \"/image1.png\",\n                \"productName\": \"Sneakers\",\n                \"productPrice\": 25.33\n            },\n            {\n                \"__id\": \"07f89266-9a6f-4998-b22c-778e01c94814\",\n                \"productCategory\": \"Casual\",\n                \"productImage\": \"/image2.png\",\n                \"productName\": \"T-Shirt\",\n                \"productPrice\": 9.99\n            }\n        ]\n    },\n    \"contactInformation\": {\n        \"email\": [\n            {\n                \"address\": \"janewilliams@vhdmeida.com\"\n            }\n        ]\n    }\n}"}],"_postman_id":"8e9b428f-f5bd-4a7a-8e57-8b4a7984c2fb"},{"name":"Partial person update","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"id\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","",""],"type":"text/javascript","packages":{}}}],"id":"95ef7f87-d9b2-4c3d-86e8-31fbdb2ceeea","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"lastName\": \"Smith\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/persons?identifier=janewilliams@example.com&type=EMAIL","description":"<h1 id=\"partial-person-update\">Partial person update</h1>\n<p>Use this method to update a person profile with the data passed in the request body as follows:<br />1. New values for standard and custom profile attributes replace existing values on the profile. If no value is passed in the request, the attribute keeps its value.<br />2. Tags in the request are appended to the profile tag list.<br />3. New contact information (email addresses and phone numbers) in the request is appended to the contact list of the profile.</p>\n<h3 id=\"request-rate-limit\">Request rate limit</h3>\n<p>5 requests / second (per account)</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>phone</em></td>\n<td>string</td>\n<td>Example: phone=46701234567  <br />Person’s phone number. Phone numbers must be in international format.</td>\n</tr>\n<tr>\n<td>email</td>\n<td>string</td>\n<td>Example: email=<a href=\"mailto:name@example.com\">name@example.com</a>  <br />Person’s email address. Must comply with the email format and cannot exceed 255 characters. One person can have up to 100 email addresses.</td>\n</tr>\n<tr>\n<td>externalId</td>\n<td>string</td>\n<td>Example: externalId=6F9619FF-8B86-D011-B42D-00CF4FC964FF  <br />Unique ID for a person from your or another external system.</td>\n</tr>\n<tr>\n<td>pushRegistrationId</td>\n<td>string</td>\n<td>Example: pushRegistrationId=6F9619FF-8B86-D011-B42D-00CF4FC964FF  <br />Person's push registration ID.</td>\n</tr>\n<tr>\n<td>id</td>\n<td>integer</td>\n<td>Example: id=11351351  <br />Person's internal ID.</td>\n</tr>\n<tr>\n<td>lineId</td>\n<td>string</td>\n<td>Example: lineId=U045147f1ad961bfe996b72bbf417f3c9  <br />Person’s Line ID. To get person by Line OTT channel, you need to specify both lineId and lineSenderId parameters.</td>\n</tr>\n<tr>\n<td>lineSenderId</td>\n<td>string</td>\n<td>Example: lineSenderId=1644264921  <br />Person’s Line sender ID. To get person by Line OTT channel, you need to specify both lineId and lineSenderId parameter</td>\n</tr>\n<tr>\n<td>facebookId</td>\n<td>string</td>\n<td>Example: facebookId=370329180020364  <br />Person’s Facebook ID. To get person by Facebook OTT channel, you need to specify both facebookId and facebookSenderId parameters.</td>\n</tr>\n<tr>\n<td>facebookSenderId</td>\n<td>integer</td>\n<td>Example: facebookSenderId=2094832040560427  <br />Person’s Facebook sender ID. To get person by Facebook OTT channel, you need to specify both facebookId and facebookSenderId parameters.</td>\n</tr>\n<tr>\n<td>telegramUserId</td>\n<td>string</td>\n<td>Example: telegramUserId=1303201999  <br />Person’s Telegram user ID. To get person by Telegram OTT channel, you need to specify both telegramUserId and telegramBotId parameters.</td>\n</tr>\n<tr>\n<td>telegramBotId</td>\n<td>string</td>\n<td>Example: telegramBotId=1495032701  <br />Person’s Telegram bot ID. To get person by Telegram OTT channel, you need to specify both telegramUserId and telegramBotId parameters.</td>\n</tr>\n<tr>\n<td>viberBotUserId</td>\n<td>string</td>\n<td>Example: viberBotUserId=Upk26V/i1GXfvxZ8S41P/w==  <br />Person’s Viber Bot user ID. To get person by Viber Bot OTT channel, you need to specify both viberBotUserId and viberBotId parameters.</td>\n</tr>\n<tr>\n<td>viberBotId</td>\n<td><br />integer</td>\n<td>Example: viberBotId=5591458813882487336  <br />Person’s Viber Bot ID. To get person by Viber Bot OTT channel, you need to specify both viberBotUserId and viberBotId parameters.</td>\n</tr>\n<tr>\n<td>instagramId</td>\n<td>string</td>\n<td>Example: instagramId=17841546155331428  <br />Person’s Instagram user ID. To get person by Instagram channel, you need to specify both instagramId and instagramSenderId parameters.</td>\n</tr>\n<tr>\n<td>instagramSenderId</td>\n<td>integer</td>\n<td>Example: instagramSenderId=17841405793187218  <br />Person’s Instagram sender ID. To get person by Instagram channel, you need to specify both instagramId and instagramSenderId parameters.</td>\n</tr>\n<tr>\n<td>twitterId</td>\n<td>string</td>\n<td>example: twitterId=370329180020364  <br />Person’s Twitter user ID. To get person by Twitter channel, you need to specify both twitterId and twitterSenderId parameters.</td>\n</tr>\n<tr>\n<td>twitterSenderId</td>\n<td>integer</td>\n<td>Example: twitterSenderId=10765432100123456789  <br />Person’s Twitter sender ID. To get person by Twitter channel, you need to specify both twitterId and twitterSenderId parameters.</td>\n</tr>\n<tr>\n<td>appleBusinessChatId</td>\n<td>string</td>\n<td>Example: appleBusinessChatId=ef6ca8e9-3718-4dc9-a9a0-b4ac28d135ca  <br />Person’s Apple Business Chat ID. To get person by Apple BC channel, you need to specify both appleBusinessChatId and appleBusinessChatSenderId parameters.</td>\n</tr>\n<tr>\n<td>appleBusinessChatSenderId</td>\n<td>string</td>\n<td>Example: appleBusinessChatSenderId=urn:mbid:AQAAYyUbut3B2E3T9GLv4EaF/  <br />Person’s Apple Business Chat sender ID. To get person by Apple BC channel, you need to specify both appleBusinessChatId and appleBusinessChatSenderId parameters.</td>\n</tr>\n<tr>\n<td>liveChatRegId</td>\n<td>string</td>\n<td>Example: liveChatRegId=79f9701b-e350-4497-9689-b2257864e63f</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>address</td>\n<td>string</td>\n<td>Person's address, 256 characters max</td>\n</tr>\n<tr>\n<td>birthDate</td>\n<td>string</td>\n<td>Person's date of birth, format YYYY-MM-DD</td>\n</tr>\n<tr>\n<td>city</td>\n<td>string</td>\n<td>Person's city, 50 characters max</td>\n</tr>\n<tr>\n<td>computedAttributes  <br />{  <br />  <br />  <br />  <br />  <br />  <br />property name*  <br />{ }  <br />  <br />  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />  <br />  <br />  <br />object</td>\n<td>Person's computed attributes grouped by type</td>\n</tr>\n<tr>\n<td>contactInformation  <br />{  <br />  <br />  <br />  <br />  <br />  <br />email  <br />[{  <br />  <br />  <br />  <br />  <br />address  <br />  <br />  <br />  <br />  <br />}] ,  <br />  <br />  <br />  <br />phone  <br />[{  <br />  <br />  <br />  <br />  <br />number  <br />  <br />  <br />}] ,  <br />  <br />  <br />facebook  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />instagram  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />liveChat  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />telegram  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />viberBots  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />twitter  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />webpush  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />registrationId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />},  <br />  <br />additionalData  <br />{  <br />  <br />property name  <br />  <br />  <br />},  <br />  <br />push  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />registrationId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />},  <br />  <br />additionalData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />appleBusinessChat  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />line  <br />[{  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}]  <br />  <br />}  <br />  <br />  <br /></td>\n<td>object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />object  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br /></td>\n<td>Required  <br />  <br />List of phones, emails and other information how a person can be contacted  <br />  <br />  <br />A list of person's email addresses. Max 100 emails per person.  <br />  <br />  <br />  <br />  <br />Person's email address. Must comply with the email format and cannot exceed 255characters. One person can have up to 100 email addresses.  <br />  <br />  <br />  <br />  <br />  <br />A list of person's phone numbers. Max 100 numbers per person.  <br />  <br />  <br />  <br />  <br />Person's phone number. Must be in international format and cannot exceed 50 characters. One person can have up to 100 phone numbers.  <br />  <br />  <br />A list of person's Facebook destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Instagram destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Live Chat destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's telegram destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Viber Bots destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's twitter destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's web push registrations  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Push registration ID  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />Additional data collected from the destination  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's push registrations  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Push registration ID  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />Additional data collected from the destination  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Apple Business Chat destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Line destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br /></td>\n</tr>\n<tr>\n<td>country</td>\n<td>string</td>\n<td>Person's country, 50 characters max</td>\n</tr>\n<tr>\n<td>customAttributes  <br />{  <br />  <br />  <br />property name*  <br />{ }  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />object</td>\n<td>List of custom attributes for the person, 4096 characters max per value</td>\n</tr>\n<tr>\n<td>externalId</td>\n<td>string</td>\n<td>Unique ID for a person from your or another external system, 256 characters max</td>\n</tr>\n<tr>\n<td>firstName</td>\n<td>string</td>\n<td>Person's first name, 255 characters max</td>\n</tr>\n<tr>\n<td>gender</td>\n<td>string</td>\n<td>Enum: \"MALE\" \"FEMALE\"  <br />Person's gender</td>\n</tr>\n<tr>\n<td>integrations  <br />{  <br />  <br />salesforce  <br />{  <br />  <br />  <br />contactId  <br />  <br />  <br />leadId  <br />  <br />  <br />}  <br />}</td>\n<td>object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />string  <br />  <br />  <br />string  <br /></td>\n<td>Integrations  <br />  <br />  <br />Salesforce integration  <br />  <br />  <br />  <br />Salesforce contact id  <br />  <br />  <br />Salesforce lead id</td>\n</tr>\n<tr>\n<td>lastName</td>\n<td>string</td>\n<td>Person's last name, 255 characters max</td>\n</tr>\n<tr>\n<td>middleName</td>\n<td>string</td>\n<td>Person's middle name, 50 characters max</td>\n</tr>\n<tr>\n<td>profilePicture</td>\n<td>string</td>\n<td>URL for the person's profile picture, 2083 characters max</td>\n</tr>\n<tr>\n<td>tags</td>\n<td>array of  <br />strings</td>\n<td>List of tags that this person has</td>\n</tr>\n<tr>\n<td>type</td>\n<td>string</td>\n<td>Enum: \"CUSTOMER\" \"LEAD\"  <br />Person's type, default type is CUSTOMER</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"responses\">Responses</h3>\n<p>Default sucessful response</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>address</td>\n<td>string</td>\n<td>Person's address, 256 characters max</td>\n</tr>\n<tr>\n<td>birthDate</td>\n<td>string</td>\n<td>Person's date of birth, format YYYY-MM-DD</td>\n</tr>\n<tr>\n<td>city</td>\n<td>string</td>\n<td>Person's city, 50 characters max</td>\n</tr>\n<tr>\n<td>computedAttributes  <br />{  <br />  <br />  <br />  <br />  <br />  <br />property name*  <br />{ }  <br />  <br />  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />  <br />  <br />  <br />object</td>\n<td>Person's computed attributes grouped by type</td>\n</tr>\n<tr>\n<td>contactInformation  <br />{  <br />  <br />  <br />  <br />  <br />  <br />email  <br />[{  <br />  <br />  <br />  <br />  <br />address  <br />  <br />  <br />  <br />  <br />}] ,  <br />  <br />  <br />  <br />phone  <br />[{  <br />  <br />  <br />  <br />  <br />number  <br />  <br />  <br />}] ,  <br />  <br />  <br />facebook  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />instagram  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />liveChat  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />telegram  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />viberBots  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />twitter  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />webpush  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />registrationId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />},  <br />  <br />additionalData  <br />{  <br />  <br />property name  <br />  <br />  <br />},  <br />  <br />push  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />registrationId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />},  <br />  <br />additionalData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />appleBusinessChat  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />line  <br />[{  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}]  <br />  <br />}  <br />  <br />  <br /></td>\n<td>object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />object  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br /></td>\n<td>Required  <br />  <br />List of phones, emails and other information how a person can be contacted  <br />  <br />  <br />A list of person's email addresses. Max 100 emails per person.  <br />  <br />  <br />  <br />  <br />Person's email address. Must comply with the email format and cannot exceed 255characters. One person can have up to 100 email addresses.  <br />  <br />  <br />  <br />  <br />  <br />A list of person's phone numbers. Max 100 numbers per person.  <br />  <br />  <br />  <br />  <br />Person's phone number. Must be in international format and cannot exceed 50 characters. One person can have up to 100 phone numbers.  <br />  <br />  <br />A list of person's Facebook destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Instagram destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Live Chat destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's telegram destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Viber Bots destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's twitter destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's web push registrations  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Push registration ID  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />Additional data collected from the destination  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's push registrations  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Push registration ID  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />Additional data collected from the destination  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Apple Business Chat destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Line destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br /></td>\n</tr>\n<tr>\n<td>country</td>\n<td>string</td>\n<td>Person's country, 50 characters max</td>\n</tr>\n<tr>\n<td>customAttributes  <br />{  <br />  <br />  <br />property name*  <br />{ }  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />object</td>\n<td>List of custom attributes for the person, 4096 characters max per value</td>\n</tr>\n<tr>\n<td>externalId</td>\n<td>string</td>\n<td>Unique ID for a person from your or another external system, 256 characters max</td>\n</tr>\n<tr>\n<td>firstName</td>\n<td>string</td>\n<td>Person's first name, 255 characters max</td>\n</tr>\n<tr>\n<td>gender</td>\n<td>string</td>\n<td>Enum: \"MALE\" \"FEMALE\"  <br />Person's gender</td>\n</tr>\n<tr>\n<td>integrations  <br />{  <br />  <br />salesforce  <br />{  <br />  <br />  <br />contactId  <br />  <br />  <br />leadId  <br />  <br />  <br />}  <br />}</td>\n<td>object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />string  <br />  <br />  <br />string  <br /></td>\n<td>Integrations  <br />  <br />  <br />Salesforce integration  <br />  <br />  <br />  <br />Salesforce contact id  <br />  <br />  <br />Salesforce lead id</td>\n</tr>\n<tr>\n<td>lastName</td>\n<td>string</td>\n<td>Person's last name, 255 characters max</td>\n</tr>\n<tr>\n<td>middleName</td>\n<td>string</td>\n<td>Person's middle name, 50 characters max</td>\n</tr>\n<tr>\n<td>profilePicture</td>\n<td>string</td>\n<td>URL for the person's profile picture, 2083 characters max</td>\n</tr>\n<tr>\n<td>tags</td>\n<td>array of  <br />strings</td>\n<td>List of tags that this person has</td>\n</tr>\n<tr>\n<td>type</td>\n<td>string</td>\n<td>Enum: \"CUSTOMER\" \"LEAD\"  <br />Person's type, default type is CUSTOMER</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-responses\">Error responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>requestError</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>serviceException</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>Identifier of the error</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Detailed error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-parameters\">Additional parameters</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>identifier</em></td>\n<td>String</td>\n<td>Person ID. ID type must match the <code>type</code> parameter. Some channels (e,g., Apple Business Chat) use identifiers that contain unsafe characters. Make sure you URL-encode them in your API request</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-request-fields\">Additional request fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>contactInformation.instagramDm</em></td>\n<td>Array</td>\n<td>A list of person's Instagram DM destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.kakaoSangdam</em></td>\n<td>Array</td>\n<td>A list of person's Kakao Sangdam destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.kakaoTalk</em></td>\n<td>Array</td>\n<td>A list of person's KakaoTalk destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.openChannel</em></td>\n<td>Array</td>\n<td>A list of person's Open Channel destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.push[].isPrimary</em></td>\n<td>Boolean</td>\n<td>Set to true if this device is a primary device of a user among other devices.</td>\n</tr>\n<tr>\n<td><em>contactInformation.tiktokBm</em></td>\n<td>Array</td>\n<td>A list of person's TikTok Business Messaging destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.whatsapp</em></td>\n<td>Array</td>\n<td>A list of person's WhatsApp destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.zaloFollower</em></td>\n<td>Array</td>\n<td>A list of person's Zalo Follower destinations.</td>\n</tr>\n<tr>\n<td><em>createdAt</em></td>\n<td>String</td>\n<td>Date and time of creation. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td><em>modifiedAt</em></td>\n<td>String</td>\n<td>Date and time of last modification. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td><em>modifiedFrom</em></td>\n<td></td>\n<td>The information which describes the source of the last modification of record.</td>\n</tr>\n<tr>\n<td><em>origin</em></td>\n<td></td>\n<td>The information which describes the origin of the record.</td>\n</tr>\n<tr>\n<td><em>preferredLanguage</em></td>\n<td>String</td>\n<td>Person's preferred language. Must be in two letter ISO (xx) or language-region BCP-47 (xx-YY) format.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-response-fields\">Additional response fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>contactInformation.instagramDm</em></td>\n<td>Array</td>\n<td>A list of person's Instagram DM destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.kakaoSangdam</em></td>\n<td>Array</td>\n<td>A list of person's Kakao Sangdam destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.kakaoTalk</em></td>\n<td>Array</td>\n<td>A list of person's KakaoTalk destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.openChannel</em></td>\n<td>Array</td>\n<td>A list of person's Open Channel destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.push[].isPrimary</em></td>\n<td>Boolean</td>\n<td>Set to true if this device is a primary device of a user among other devices.</td>\n</tr>\n<tr>\n<td><em>contactInformation.tiktokBm</em></td>\n<td>Array</td>\n<td>A list of person's TikTok Business Messaging destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.whatsapp</em></td>\n<td>Array</td>\n<td>A list of person's WhatsApp destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.zaloFollower</em></td>\n<td>Array</td>\n<td>A list of person's Zalo Follower destinations.</td>\n</tr>\n<tr>\n<td><em>createdAt</em></td>\n<td>String</td>\n<td>Date and time of creation. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td><em>modifiedAt</em></td>\n<td>String</td>\n<td>Date and time of last modification. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td><em>modifiedFrom</em></td>\n<td></td>\n<td>The information which describes the source of the last modification of record.</td>\n</tr>\n<tr>\n<td><em>origin</em></td>\n<td></td>\n<td>The information which describes the origin of the record.</td>\n</tr>\n<tr>\n<td><em>preferredLanguage</em></td>\n<td>String</td>\n<td>Person's preferred language. Must be in two letter ISO (xx) or language-region BCP-47 (xx-YY) format.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["people","2","persons"],"host":["go2","vhdmedia","se"],"query":[{"key":"identifier","value":"janewilliams@example.com"},{"key":"type","value":"EMAIL"}],"variable":[]}},"response":[{"id":"5e781771-c4bb-4579-8b7e-64114c27e4c6","name":"Partial person update","originalRequest":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n  \"customAttributes\": {\n    \"ShoppingCartList\": [\n      {\n        \"productName\": \"Sneakers\",\n        \"productPrice\": 20.33,\n        \"productCategory\": \"Sport Sneakers\",\n        \"productImage\": \"/image1.png\"\n      },\n      {\n        \"productName\": \"T-Shirt\",\n        \"productPrice\": 10.99,\n        \"productCategory\": \"Casual\",\n        \"productImage\": \"/image2.png\"\n      }\n    ]\n  }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/2/persons?email=janewilliams@vhdmeida.com","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","2","persons"],"query":[{"key":"email","value":"janewilliams@vhdmeida.com"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"638"},{"key":"Date","value":"Wed, 17 May 2023 12:00:31 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684324831442251666"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"createdAt\": \"2023-05-08T15:00:54\",\n    \"modifiedAt\": \"2023-05-10T09:16:44\",\n    \"id\": 4,\n    \"firstName\": \"Jane\",\n    \"lastName\": \"Smith\",\n    \"type\": \"CUSTOMER\",\n    \"origin\": \"API\",\n    \"modifiedFrom\": \"API\",\n    \"customAttributes\": {\n        \"Company\": \"VHD\",\n        \"ShoppingCartList\": [\n            {\n                \"__id\": \"6fc50081-3832-4630-8d5e-c2d2b3e581ac\",\n                \"productCategory\": \"Sport Sneakers\",\n                \"productImage\": \"/image1.png\",\n                \"productName\": \"Sneakers\",\n                \"productPrice\": 20.33\n            },\n            {\n                \"__id\": \"f03121ae-5485-40e1-9849-cf1dfaedfb6e\",\n                \"productCategory\": \"Casual\",\n                \"productImage\": \"/image2.png\",\n                \"productName\": \"T-Shirt\",\n                \"productPrice\": 10.99\n            }\n        ],\n        \"Contract Expiry\": \"2023-06-01\"\n    },\n    \"contactInformation\": {\n        \"email\": [\n            {\n                \"address\": \"janewilliams@vhdmeida.com\"\n            }\n        ]\n    }\n}"}],"_postman_id":"95ef7f87-d9b2-4c3d-86e8-31fbdb2ceeea"},{"name":"Set contact information to person","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"id\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","",""],"type":"text/javascript","packages":{}}}],"id":"49724aaa-d009-4b4a-9cf7-4a0b9a6bc29b","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"contactInformation\": {\n    \"email\": [\n      {\n        \"address\": \"janewilliams@example.com\"\n      },\n      {\n        \"address\": \"jane.work@example.com\"\n      }\n    ],\n    \"phone\": [\n      {\n        \"number\": \"4670123456\"\n      }\n    ]\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/persons/contactInformation?identifier=janewilliams@example.com&type=EMAIL","description":"<p>Use this method to replace contact information for a particular person. This methods will replace all existing emails and mobile phones with new contact information.</p>\n<h3 id=\"request-rate-limit\">Request rate limit</h3>\n<p>5 requests / second (per account)</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>phone</em></td>\n<td>string</td>\n<td>Example: phone=46701234567  <br />Person’s phone number. Phone numbers must be in international format.</td>\n</tr>\n<tr>\n<td>email</td>\n<td>string</td>\n<td>Example: email=<a href=\"mailto:name@example.com\">name@example.com</a>  <br />Person’s email address. Must comply with the email format and cannot exceed 255 characters. One person can have up to 100 email addresses.</td>\n</tr>\n<tr>\n<td>externalId</td>\n<td>string</td>\n<td>Example: externalId=6F9619FF-8B86-D011-B42D-00CF4FC964FF  <br />Unique ID for a person from your or another external system.</td>\n</tr>\n<tr>\n<td>pushRegistrationId</td>\n<td>string</td>\n<td>Example: pushRegistrationId=6F9619FF-8B86-D011-B42D-00CF4FC964FF  <br />Person's push registration ID.</td>\n</tr>\n<tr>\n<td>id</td>\n<td>ineger</td>\n<td>Example: id=11351351  <br />Person's internal ID.</td>\n</tr>\n<tr>\n<td>lineId</td>\n<td>string</td>\n<td>Example: lineId=U045147f1ad961bfe996b72bbf417f3c9  <br />Person’s Line ID. To get person by Line OTT channel, you need to specify both lineId and lineSenderId parameters.</td>\n</tr>\n<tr>\n<td>lineSenderId</td>\n<td>string</td>\n<td>Example: lineSenderId=1644264921  <br />Person’s Line sender ID. To get person by Line OTT channel, you need to specify both lineId and lineSenderId parameter</td>\n</tr>\n<tr>\n<td>facebookId</td>\n<td>string</td>\n<td>Example: facebookId=370329180020364  <br />Person’s Facebook ID. To get person by Facebook OTT channel, you need to specify both facebookId and facebookSenderId parameters.</td>\n</tr>\n<tr>\n<td>facebookSenderId</td>\n<td>integer</td>\n<td>Example: facebookSenderId=2094832040560427  <br />Person’s Facebook sender ID. To get person by Facebook OTT channel, you need to specify both facebookId and facebookSenderId parameters.</td>\n</tr>\n<tr>\n<td>telegramUserId</td>\n<td>string</td>\n<td>Example: telegramUserId=1303201999  <br />Person’s Telegram user ID. To get person by Telegram OTT channel, you need to specify both telegramUserId and telegramBotId parameters.</td>\n</tr>\n<tr>\n<td>telegramBotId</td>\n<td>string</td>\n<td>Example: telegramBotId=1495032701  <br />Person’s Telegram bot ID. To get person by Telegram OTT channel, you need to specify both telegramUserId and telegramBotId parameters.</td>\n</tr>\n<tr>\n<td>viberBotUserId</td>\n<td>string</td>\n<td>Example: viberBotUserId=Upk26V/i1GXfvxZ8S41P/w==  <br />Person’s Viber Bot user ID. To get person by Viber Bot OTT channel, you need to specify both viberBotUserId and viberBotId parameters.</td>\n</tr>\n<tr>\n<td>viberBotId</td>\n<td><br />integer</td>\n<td>Example: viberBotId=5591458813882487336  <br />Person’s Viber Bot ID. To get person by Viber Bot OTT channel, you need to specify both viberBotUserId and viberBotId parameters.</td>\n</tr>\n<tr>\n<td>instagramId</td>\n<td>string</td>\n<td>Example: instagramId=17841546155331428  <br />Person’s Instagram user ID. To get person by Instagram channel, you need to specify both instagramId and instagramSenderId parameters.</td>\n</tr>\n<tr>\n<td>instagramSenderId</td>\n<td>integer</td>\n<td>Example: instagramSenderId=17841405793187218  <br />Person’s Instagram sender ID. To get person by Instagram channel, you need to specify both instagramId and instagramSenderId parameters.</td>\n</tr>\n<tr>\n<td>twitterId</td>\n<td>string</td>\n<td>example: twitterId=370329180020364  <br />Person’s Twitter user ID. To get person by Twitter channel, you need to specify both twitterId and twitterSenderId parameters.</td>\n</tr>\n<tr>\n<td>twitterSenderId</td>\n<td>integer</td>\n<td>Example: twitterSenderId=10765432100123456789  <br />Person’s Twitter sender ID. To get person by Twitter channel, you need to specify both twitterId and twitterSenderId parameters.</td>\n</tr>\n<tr>\n<td>appleBusinessChatId</td>\n<td>string</td>\n<td>Example: appleBusinessChatId=ef6ca8e9-3718-4dc9-a9a0-b4ac28d135ca  <br />Person’s Apple Business Chat ID. To get person by Apple BC channel, you need to specify both appleBusinessChatId and appleBusinessChatSenderId parameters.</td>\n</tr>\n<tr>\n<td>appleBusinessChatSenderId</td>\n<td>string</td>\n<td>Example: appleBusinessChatSenderId=urn:mbid:AQAAYyUbut3B2E3T9GLv4EaF/  <br />Person’s Apple Business Chat sender ID. To get person by Apple BC channel, you need to specify both appleBusinessChatId and appleBusinessChatSenderId parameters.</td>\n</tr>\n<tr>\n<td>liveChatRegId</td>\n<td>string</td>\n<td>Example: liveChatRegId=79f9701b-e350-4497-9689-b2257864e63f</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>contactInformation  <br />{  <br />  <br />  <br />  <br />  <br />  <br />email  <br />[{  <br />  <br />  <br />  <br />  <br />address  <br />  <br />  <br />  <br />  <br />}] ,  <br />  <br />  <br />  <br />phone  <br />[{  <br />  <br />  <br />  <br />  <br />number  <br />  <br />  <br />  <br />  <br />  <br />}]  <br />}  <br />  <br />  <br /></td>\n<td>object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />  <br />string</td>\n<td>Required  <br />  <br />List of phones, emails and other information how a person can be contacted  <br />  <br />  <br />A list of person's email addresses. Max 100 emails per person.  <br />  <br />  <br />  <br />  <br />Person's email address. Must comply with the email format and cannot exceed 255characters. One person can have up to 100 email addresses.  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's phone numbers. Max 100 numbers per person.  <br />  <br />  <br />  <br />  <br />Person's phone number. Must be in international format and cannot exceed 50 characters. One person can have up to 100 phone numbers.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"responses\">Responses</h3>\n<p>Default sucessful response</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>address</td>\n<td>string</td>\n<td>Person's address, 256 characters max</td>\n</tr>\n<tr>\n<td>birthDate</td>\n<td>string</td>\n<td>Person's date of birth, format YYYY-MM-DD</td>\n</tr>\n<tr>\n<td>city</td>\n<td>string</td>\n<td>Person's city, 50 characters max</td>\n</tr>\n<tr>\n<td>computedAttributes  <br />{  <br />  <br />  <br />  <br />  <br />  <br />property name*  <br />{ }  <br />  <br />  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />  <br />  <br />  <br />object</td>\n<td>Person's computed attributes grouped by type</td>\n</tr>\n<tr>\n<td>contactInformation  <br />{  <br />  <br />  <br />  <br />  <br />  <br />email  <br />[{  <br />  <br />  <br />  <br />  <br />address  <br />  <br />  <br />  <br />  <br />}] ,  <br />  <br />  <br />  <br />phone  <br />[{  <br />  <br />  <br />  <br />  <br />number  <br />  <br />  <br />}] ,  <br />  <br />  <br />facebook  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />instagram  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />liveChat  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />telegram  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />viberBots  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />twitter  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />webpush  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />registrationId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />},  <br />  <br />additionalData  <br />{  <br />  <br />property name  <br />  <br />  <br />},  <br />  <br />push  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />registrationId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />},  <br />  <br />additionalData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />appleBusinessChat  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />line  <br />[{  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}]  <br />  <br />}  <br />  <br />  <br /></td>\n<td>object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />object  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br /></td>\n<td>Required  <br />  <br />List of phones, emails and other information how a person can be contacted  <br />  <br />  <br />A list of person's email addresses. Max 100 emails per person.  <br />  <br />  <br />  <br />  <br />Person's email address. Must comply with the email format and cannot exceed 255characters. One person can have up to 100 email addresses.  <br />  <br />  <br />  <br />  <br />  <br />A list of person's phone numbers. Max 100 numbers per person.  <br />  <br />  <br />  <br />  <br />Person's phone number. Must be in international format and cannot exceed 50 characters. One person can have up to 100 phone numbers.  <br />  <br />  <br />A list of person's Facebook destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Instagram destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Live Chat destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's telegram destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Viber Bots destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's twitter destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's web push registrations  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Push registration ID  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />Additional data collected from the destination  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's push registrations  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Push registration ID  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />Additional data collected from the destination  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Apple Business Chat destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Line destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br /></td>\n</tr>\n<tr>\n<td>country</td>\n<td>string</td>\n<td>Person's country, 50 characters max</td>\n</tr>\n<tr>\n<td>customAttributes  <br />{  <br />  <br />  <br />property name*  <br />{ }  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />object</td>\n<td>List of custom attributes for the person, 4096 characters max per value</td>\n</tr>\n<tr>\n<td>externalId</td>\n<td>string</td>\n<td>Unique ID for a person from your or another external system, 256 characters max</td>\n</tr>\n<tr>\n<td>firstName</td>\n<td>string</td>\n<td>Person's first name, 255 characters max</td>\n</tr>\n<tr>\n<td>gender</td>\n<td>string</td>\n<td>Enum: \"MALE\" \"FEMALE\"  <br />Person's gender</td>\n</tr>\n<tr>\n<td>integrations  <br />{  <br />  <br />salesforce  <br />{  <br />  <br />  <br />contactId  <br />  <br />  <br />leadId  <br />  <br />  <br />}  <br />}</td>\n<td>object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />string  <br />  <br />  <br />string  <br /></td>\n<td>Integrations  <br />  <br />  <br />Salesforce integration  <br />  <br />  <br />  <br />Salesforce contact id  <br />  <br />  <br />Salesforce lead id</td>\n</tr>\n<tr>\n<td>lastName</td>\n<td>string</td>\n<td>Person's last name, 255 characters max</td>\n</tr>\n<tr>\n<td>middleName</td>\n<td>string</td>\n<td>Person's middle name, 50 characters max</td>\n</tr>\n<tr>\n<td>profilePicture</td>\n<td>string</td>\n<td>URL for the person's profile picture, 2083 characters max</td>\n</tr>\n<tr>\n<td>tags</td>\n<td>array of  <br />strings</td>\n<td>List of tags that this person has</td>\n</tr>\n<tr>\n<td>type</td>\n<td>string</td>\n<td>Enum: \"CUSTOMER\" \"LEAD\"  <br />Person's type, default type is CUSTOMER</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"responses-1\">Responses</h3>\n<p>Default sucesful response</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>address</td>\n<td>string</td>\n<td>Person's address, 256 characters max</td>\n</tr>\n<tr>\n<td>birthDate</td>\n<td>string</td>\n<td>Person's date of birth, format YYYY-MM-DD</td>\n</tr>\n<tr>\n<td>city</td>\n<td>string</td>\n<td>Person's city, 50 characters max</td>\n</tr>\n<tr>\n<td>computedAttributes  <br />{  <br />  <br />  <br />  <br />  <br />  <br />property name*  <br />{ }  <br />  <br />  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />  <br />  <br />  <br />object</td>\n<td>Person's computed attributes grouped by type</td>\n</tr>\n<tr>\n<td>contactInformation  <br />{  <br />  <br />  <br />  <br />  <br />  <br />email  <br />[{  <br />  <br />  <br />  <br />  <br />address  <br />  <br />  <br />  <br />  <br />}] ,  <br />  <br />  <br />  <br />phone  <br />[{  <br />  <br />  <br />  <br />  <br />number  <br />  <br />  <br />}] ,  <br />  <br />  <br />facebook  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />instagram  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />liveChat  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />telegram  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />viberBots  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />twitter  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />webpush  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />registrationId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />},  <br />  <br />additionalData  <br />{  <br />  <br />property name  <br />  <br />  <br />},  <br />  <br />push  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />registrationId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />},  <br />  <br />additionalData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />appleBusinessChat  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />line  <br />[{  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}]  <br />  <br />}  <br />  <br />  <br /></td>\n<td>object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />object  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br /></td>\n<td>Required  <br />  <br />List of phones, emails and other information how a person can be contacted  <br />  <br />  <br />A list of person's email addresses. Max 100 emails per person.  <br />  <br />  <br />  <br />  <br />Person's email address. Must comply with the email format and cannot exceed 255characters. One person can have up to 100 email addresses.  <br />  <br />  <br />  <br />  <br />  <br />A list of person's phone numbers. Max 100 numbers per person.  <br />  <br />  <br />  <br />  <br />Person's phone number. Must be in international format and cannot exceed 50 characters. One person can have up to 100 phone numbers.  <br />  <br />  <br />A list of person's Facebook destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Instagram destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Live Chat destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's telegram destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Viber Bots destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's twitter destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's web push registrations  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Push registration ID  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />Additional data collected from the destination  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's push registrations  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Push registration ID  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />Additional data collected from the destination  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Apple Business Chat destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Line destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br /></td>\n</tr>\n<tr>\n<td>country</td>\n<td>string</td>\n<td>Person's country, 50 characters max</td>\n</tr>\n<tr>\n<td>customAttributes  <br />{  <br />  <br />  <br />property name*  <br />{ }  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />object</td>\n<td>List of custom attributes for the person, 4096 characters max per value</td>\n</tr>\n<tr>\n<td>externalId</td>\n<td>string</td>\n<td>Unique ID for a person from your or another external system, 256 characters max</td>\n</tr>\n<tr>\n<td>firstName</td>\n<td>string</td>\n<td>Person's first name, 255 characters max</td>\n</tr>\n<tr>\n<td>gender</td>\n<td>string</td>\n<td>Enum: \"MALE\" \"FEMALE\"  <br />Person's gender</td>\n</tr>\n<tr>\n<td>integrations  <br />{  <br />  <br />salesforce  <br />{  <br />  <br />  <br />contactId  <br />  <br />  <br />leadId  <br />  <br />  <br />}  <br />}</td>\n<td>object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />string  <br />  <br />  <br />string  <br /></td>\n<td>Integrations  <br />  <br />  <br />Salesforce integration  <br />  <br />  <br />  <br />Salesforce contact id  <br />  <br />  <br />Salesforce lead id</td>\n</tr>\n<tr>\n<td>lastName</td>\n<td>string</td>\n<td>Person's last name, 255 characters max</td>\n</tr>\n<tr>\n<td>middleName</td>\n<td>string</td>\n<td>Person's middle name, 50 characters max</td>\n</tr>\n<tr>\n<td>profilePicture</td>\n<td>string</td>\n<td>URL for the person's profile picture, 2083 characters max</td>\n</tr>\n<tr>\n<td>tags</td>\n<td>array of  <br />strings</td>\n<td>List of tags that this person has</td>\n</tr>\n<tr>\n<td>type</td>\n<td>string</td>\n<td>Enum: \"CUSTOMER\" \"LEAD\"  <br />Person's type, default type is CUSTOMER</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-responses\">Error responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>requestError</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>serviceException</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>Identifier of the error</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Detailed error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-parameters\">Additional parameters</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>identifier</em></td>\n<td>String</td>\n<td>Person ID. ID type must match the <code>type</code> parameter. Some channels (e,g., Apple Business Chat) use identifiers that contain unsafe characters. Make sure you URL-encode them in your API request</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-request-fields\">Additional request fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>contactInformation.instagramDm</em></td>\n<td>Array</td>\n<td>A list of person's Instagram DM destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.kakaoSangdam</em></td>\n<td>Array</td>\n<td>A list of person's Kakao Sangdam destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.kakaoTalk</em></td>\n<td>Array</td>\n<td>A list of person's KakaoTalk destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.openChannel</em></td>\n<td>Array</td>\n<td>A list of person's Open Channel destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.push[].isPrimary</em></td>\n<td>Boolean</td>\n<td>Set to true if this device is a primary device of a user among other devices.</td>\n</tr>\n<tr>\n<td><em>contactInformation.tiktokBm</em></td>\n<td>Array</td>\n<td>A list of person's TikTok Business Messaging destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.whatsapp</em></td>\n<td>Array</td>\n<td>A list of person's WhatsApp destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.zaloFollower</em></td>\n<td>Array</td>\n<td>A list of person's Zalo Follower destinations.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-response-fields\">Additional response fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>contactInformation.instagramDm</em></td>\n<td>Array</td>\n<td>A list of person's Instagram DM destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.kakaoSangdam</em></td>\n<td>Array</td>\n<td>A list of person's Kakao Sangdam destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.kakaoTalk</em></td>\n<td>Array</td>\n<td>A list of person's KakaoTalk destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.openChannel</em></td>\n<td>Array</td>\n<td>A list of person's Open Channel destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.push[].isPrimary</em></td>\n<td>Boolean</td>\n<td>Set to true if this device is a primary device of a user among other devices.</td>\n</tr>\n<tr>\n<td><em>contactInformation.tiktokBm</em></td>\n<td>Array</td>\n<td>A list of person's TikTok Business Messaging destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.whatsapp</em></td>\n<td>Array</td>\n<td>A list of person's WhatsApp destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.zaloFollower</em></td>\n<td>Array</td>\n<td>A list of person's Zalo Follower destinations.</td>\n</tr>\n<tr>\n<td><em>createdAt</em></td>\n<td>String</td>\n<td>Date and time of creation. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td><em>modifiedAt</em></td>\n<td>String</td>\n<td>Date and time of last modification. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td><em>modifiedFrom</em></td>\n<td></td>\n<td>The information which describes the source of the last modification of record.</td>\n</tr>\n<tr>\n<td><em>origin</em></td>\n<td></td>\n<td>The information which describes the origin of the record.</td>\n</tr>\n<tr>\n<td><em>preferredLanguage</em></td>\n<td>String</td>\n<td>Person's preferred language. Must be in two letter ISO (xx) or language-region BCP-47 (xx-YY) format.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["people","2","persons","contactInformation"],"host":["go2","vhdmedia","se"],"query":[{"key":"identifier","value":"janewilliams@example.com"},{"key":"type","value":"EMAIL"}],"variable":[]}},"response":[{"id":"ed26bfa8-72c3-457e-80a4-1b8cec9e8658","name":"Set contact information to person","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n  \"contactInformation\": {\n    \"email\": [\n      {\n        \"address\": \"janewilliams@example.com\"\n      }\n    ],\n    \"phone\": [\n      {\n        \"number\": \"4670123456\"\n      }\n    ]\n  }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/2/persons/contactInformation?email=janewilliams@example.com","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","2","persons","contactInformation"],"query":[{"key":"email","value":"janewilliams@example.com"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"278"},{"key":"Date","value":"Wed, 17 May 2023 15:58:56 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684339137248564226"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"createdAt\": \"2023-05-17T13:47:52\",\n    \"modifiedAt\": \"2023-05-17T13:47:52\",\n    \"id\": 45,\n    \"firstName\": \"Jane\",\n    \"lastName\": \"Smith\",\n    \"type\": \"CUSTOMER\",\n    \"origin\": \"API\",\n    \"modifiedFrom\": \"API\",\n    \"contactInformation\": {\n        \"phone\": [\n            {\n                \"number\": \"4670123456\"\n            }\n        ],\n        \"email\": [\n            {\n                \"address\": \"janewilliams@example.com\"\n            }\n        ]\n    }\n}"}],"_postman_id":"49724aaa-d009-4b4a-9cf7-4a0b9a6bc29b"},{"name":"Add contact information to person","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"id\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","",""],"type":"text/javascript","packages":{}}}],"id":"d5e77329-3c42-40c3-8419-dfc962c2e299","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"contactInformation\": {\n    \"email\": [\n      {\n        \"address\": \"jane.home@example.com\"\n      }\n    ]\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/persons/contactInformation?identifier=janewilliams@example.com&type=EMAIL","description":"<p>Use this method to add emails and mobile phones to a particular person.</p>\n<h3 id=\"request-rate-limit\">Request rate limit</h3>\n<p>5 requests / second (per account)</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>phone</em></td>\n<td>string</td>\n<td>Example: phone=46701234567  <br />Person’s phone number. Phone numbers must be in international format.</td>\n</tr>\n<tr>\n<td>email</td>\n<td>string</td>\n<td>Example: email=<a href=\"mailto:name@example.com\">name@example.com</a>  <br />Person’s email address. Must comply with the email format and cannot exceed 255 characters. One person can have up to 100 email addresses.</td>\n</tr>\n<tr>\n<td>externalId</td>\n<td>string</td>\n<td>Example: externalId=6F9619FF-8B86-D011-B42D-00CF4FC964FF  <br />Unique ID for a person from your or another external system.</td>\n</tr>\n<tr>\n<td>pushRegistrationId</td>\n<td>string</td>\n<td>Example: pushRegistrationId=6F9619FF-8B86-D011-B42D-00CF4FC964FF  <br />Person's push registration ID.</td>\n</tr>\n<tr>\n<td>id</td>\n<td>integer</td>\n<td>Example: id=11351351  <br />Person's internal ID.</td>\n</tr>\n<tr>\n<td>lineId</td>\n<td>string</td>\n<td>Example: lineId=U045147f1ad961bfe996b72bbf417f3c9  <br />Person’s Line ID. To get person by Line OTT channel, you need to specify both lineId and lineSenderId parameters.</td>\n</tr>\n<tr>\n<td>lineSenderId</td>\n<td>string</td>\n<td>Example: lineSenderId=1644264921  <br />Person’s Line sender ID. To get person by Line OTT channel, you need to specify both lineId and lineSenderId parameter</td>\n</tr>\n<tr>\n<td>facebookId</td>\n<td>string</td>\n<td>Example: facebookId=370329180020364  <br />Person’s Facebook ID. To get person by Facebook OTT channel, you need to specify both facebookId and facebookSenderId parameters.</td>\n</tr>\n<tr>\n<td>facebookSenderId</td>\n<td>integer</td>\n<td>Example: facebookSenderId=2094832040560427  <br />Person’s Facebook sender ID. To get person by Facebook OTT channel, you need to specify both facebookId and facebookSenderId parameters.</td>\n</tr>\n<tr>\n<td>telegramUserId</td>\n<td>string</td>\n<td>Example: telegramUserId=1303201999  <br />Person’s Telegram user ID. To get person by Telegram OTT channel, you need to specify both telegramUserId and telegramBotId parameters.</td>\n</tr>\n<tr>\n<td>telegramBotId</td>\n<td>string</td>\n<td>Example: telegramBotId=1495032701  <br />Person’s Telegram bot ID. To get person by Telegram OTT channel, you need to specify both telegramUserId and telegramBotId parameters.</td>\n</tr>\n<tr>\n<td>viberBotUserId</td>\n<td>string</td>\n<td>Example: viberBotUserId=Upk26V/i1GXfvxZ8S41P/w==  <br />Person’s Viber Bot user ID. To get person by Viber Bot OTT channel, you need to specify both viberBotUserId and viberBotId parameters.</td>\n</tr>\n<tr>\n<td>viberBotId</td>\n<td><br />integer</td>\n<td>Example: viberBotId=5591458813882487336  <br />Person’s Viber Bot ID. To get person by Viber Bot OTT channel, you need to specify both viberBotUserId and viberBotId parameters.</td>\n</tr>\n<tr>\n<td>instagramId</td>\n<td>string</td>\n<td>Example: instagramId=17841546155331428  <br />Person’s Instagram user ID. To get person by Instagram channel, you need to specify both instagramId and instagramSenderId parameters.</td>\n</tr>\n<tr>\n<td>instagramSenderId</td>\n<td>integer</td>\n<td>Example: instagramSenderId=17841405793187218  <br />Person’s Instagram sender ID. To get person by Instagram channel, you need to specify both instagramId and instagramSenderId parameters.</td>\n</tr>\n<tr>\n<td>twitterId</td>\n<td>string</td>\n<td>example: twitterId=370329180020364  <br />Person’s Twitter user ID. To get person by Twitter channel, you need to specify both twitterId and twitterSenderId parameters.</td>\n</tr>\n<tr>\n<td>twitterSenderId</td>\n<td>integer</td>\n<td>Example: twitterSenderId=10765432100123456789  <br />Person’s Twitter sender ID. To get person by Twitter channel, you need to specify both twitterId and twitterSenderId parameters.</td>\n</tr>\n<tr>\n<td>appleBusinessChatId</td>\n<td>string</td>\n<td>Example: appleBusinessChatId=ef6ca8e9-3718-4dc9-a9a0-b4ac28d135ca  <br />Person’s Apple Business Chat ID. To get person by Apple BC channel, you need to specify both appleBusinessChatId and appleBusinessChatSenderId parameters.</td>\n</tr>\n<tr>\n<td>appleBusinessChatSenderId</td>\n<td>string</td>\n<td>Example: appleBusinessChatSenderId=urn:mbid:AQAAYyUbut3B2E3T9GLv4EaF/  <br />Person’s Apple Business Chat sender ID. To get person by Apple BC channel, you need to specify both appleBusinessChatId and appleBusinessChatSenderId parameters.</td>\n</tr>\n<tr>\n<td>liveChatRegId</td>\n<td>string</td>\n<td>Example: liveChatRegId=79f9701b-e350-4497-9689-b2257864e63f</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>contactInformation  <br />{  <br />  <br />  <br />  <br />  <br />  <br />email  <br />[{  <br />  <br />  <br />  <br />  <br />address  <br />  <br />  <br />  <br />  <br />}] ,  <br />  <br />  <br />  <br />phone  <br />[{  <br />  <br />  <br />  <br />  <br />number  <br />  <br />  <br />  <br />  <br />  <br />}]  <br />}  <br />  <br />  <br /></td>\n<td>object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />  <br />string</td>\n<td>Required  <br />  <br />List of phones, emails and other information how a person can be contacted  <br />  <br />  <br />A list of person's email addresses. Max 100 emails per person.  <br />  <br />  <br />  <br />  <br />Person's email address. Must comply with the email format and cannot exceed 255characters. One person can have up to 100 email addresses.  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's phone numbers. Max 100 numbers per person.  <br />  <br />  <br />  <br />  <br />Person's phone number. Must be in international format and cannot exceed 50 characters. One person can have up to 100 phone numbers.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"responses\">Responses</h3>\n<p>Default sucesful response</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>address</td>\n<td>string</td>\n<td>Person's address, 256 characters max</td>\n</tr>\n<tr>\n<td>birthDate</td>\n<td>string</td>\n<td>Person's date of birth, format YYYY-MM-DD</td>\n</tr>\n<tr>\n<td>city</td>\n<td>string</td>\n<td>Person's city, 50 characters max</td>\n</tr>\n<tr>\n<td>computedAttributes  <br />{  <br />  <br />  <br />  <br />  <br />  <br />property name*  <br />{ }  <br />  <br />  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />  <br />  <br />  <br />object</td>\n<td>Person's computed attributes grouped by type</td>\n</tr>\n<tr>\n<td>contactInformation  <br />{  <br />  <br />  <br />  <br />  <br />  <br />email  <br />[{  <br />  <br />  <br />  <br />  <br />address  <br />  <br />  <br />  <br />  <br />}] ,  <br />  <br />  <br />  <br />phone  <br />[{  <br />  <br />  <br />  <br />  <br />number  <br />  <br />  <br />}] ,  <br />  <br />  <br />facebook  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />instagram  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />liveChat  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />telegram  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />viberBots  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />twitter  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />webpush  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />registrationId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />},  <br />  <br />additionalData  <br />{  <br />  <br />property name  <br />  <br />  <br />},  <br />  <br />push  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />registrationId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />},  <br />  <br />additionalData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />appleBusinessChat  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />line  <br />[{  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}]  <br />  <br />}  <br />  <br />  <br /></td>\n<td>object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />object  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br /></td>\n<td>Required  <br />  <br />List of phones, emails and other information how a person can be contacted  <br />  <br />  <br />A list of person's email addresses. Max 100 emails per person.  <br />  <br />  <br />  <br />  <br />Person's email address. Must comply with the email format and cannot exceed 255characters. One person can have up to 100 email addresses.  <br />  <br />  <br />  <br />  <br />  <br />A list of person's phone numbers. Max 100 numbers per person.  <br />  <br />  <br />  <br />  <br />Person's phone number. Must be in international format and cannot exceed 50 characters. One person can have up to 100 phone numbers.  <br />  <br />  <br />A list of person's Facebook destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Instagram destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Live Chat destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's telegram destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Viber Bots destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's twitter destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's web push registrations  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Push registration ID  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />Additional data collected from the destination  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's push registrations  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Push registration ID  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />Additional data collected from the destination  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Apple Business Chat destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Line destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br /></td>\n</tr>\n<tr>\n<td>country</td>\n<td>string</td>\n<td>Person's country, 50 characters max</td>\n</tr>\n<tr>\n<td>customAttributes  <br />{  <br />  <br />  <br />property name*  <br />{ }  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />object</td>\n<td>List of custom attributes for the person, 4096 characters max per value</td>\n</tr>\n<tr>\n<td>externalId</td>\n<td>string</td>\n<td>Unique ID for a person from your or another external system, 256 characters max</td>\n</tr>\n<tr>\n<td>firstName</td>\n<td>string</td>\n<td>Person's first name, 255 characters max</td>\n</tr>\n<tr>\n<td>gender</td>\n<td>string</td>\n<td>Enum: \"MALE\" \"FEMALE\"  <br />Person's gender</td>\n</tr>\n<tr>\n<td>integrations  <br />{  <br />  <br />salesforce  <br />{  <br />  <br />  <br />contactId  <br />  <br />  <br />leadId  <br />  <br />  <br />}  <br />}</td>\n<td>object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />string  <br />  <br />  <br />string  <br /></td>\n<td>Integrations  <br />  <br />  <br />Salesforce integration  <br />  <br />  <br />  <br />Salesforce contact id  <br />  <br />  <br />Salesforce lead id</td>\n</tr>\n<tr>\n<td>lastName</td>\n<td>string</td>\n<td>Person's last name, 255 characters max</td>\n</tr>\n<tr>\n<td>middleName</td>\n<td>string</td>\n<td>Person's middle name, 50 characters max</td>\n</tr>\n<tr>\n<td>profilePicture</td>\n<td>string</td>\n<td>URL for the person's profile picture, 2083 characters max</td>\n</tr>\n<tr>\n<td>tags</td>\n<td>array of  <br />strings</td>\n<td>List of tags that this person has</td>\n</tr>\n<tr>\n<td>type</td>\n<td>string</td>\n<td>Enum: \"CUSTOMER\" \"LEAD\"  <br />Person's type, default type is CUSTOMER</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-responses\">Error responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>requestError</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>serviceException</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>Identifier of the error</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Detailed error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-parameters\">Additional parameters</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>identifier</em></td>\n<td>String</td>\n<td>Person ID. ID type must match the <code>type</code> parameter. Some channels (e,g., Apple Business Chat) use identifiers that contain unsafe characters. Make sure you URL-encode them in your API request</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-request-fields\">Additional request fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>contactInformation.instagramDm</em></td>\n<td>Array</td>\n<td>A list of person's Instagram DM destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.kakaoSangdam</em></td>\n<td>Array</td>\n<td>A list of person's Kakao Sangdam destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.kakaoTalk</em></td>\n<td>Array</td>\n<td>A list of person's KakaoTalk destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.openChannel</em></td>\n<td>Array</td>\n<td>A list of person's Open Channel destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.push[].isPrimary</em></td>\n<td>Boolean</td>\n<td>Set to true if this device is a primary device of a user among other devices.</td>\n</tr>\n<tr>\n<td><em>contactInformation.tiktokBm</em></td>\n<td>Array</td>\n<td>A list of person's TikTok Business Messaging destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.whatsapp</em></td>\n<td>Array</td>\n<td>A list of person's WhatsApp destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.zaloFollower</em></td>\n<td>Array</td>\n<td>A list of person's Zalo Follower destinations.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-response-fields\">Additional response fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>contactInformation.instagramDm</em></td>\n<td>Array</td>\n<td>A list of person's Instagram DM destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.kakaoSangdam</em></td>\n<td>Array</td>\n<td>A list of person's Kakao Sangdam destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.kakaoTalk</em></td>\n<td>Array</td>\n<td>A list of person's KakaoTalk destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.openChannel</em></td>\n<td>Array</td>\n<td>A list of person's Open Channel destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.push[].isPrimary</em></td>\n<td>Boolean</td>\n<td>Set to true if this device is a primary device of a user among other devices.</td>\n</tr>\n<tr>\n<td><em>contactInformation.tiktokBm</em></td>\n<td>Array</td>\n<td>A list of person's TikTok Business Messaging destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.whatsapp</em></td>\n<td>Array</td>\n<td>A list of person's WhatsApp destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.zaloFollower</em></td>\n<td>Array</td>\n<td>A list of person's Zalo Follower destinations.</td>\n</tr>\n<tr>\n<td><em>createdAt</em></td>\n<td>String</td>\n<td>Date and time of creation. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td><em>modifiedAt</em></td>\n<td>String</td>\n<td>Date and time of last modification. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td><em>modifiedFrom</em></td>\n<td></td>\n<td>The information which describes the source of the last modification of record.</td>\n</tr>\n<tr>\n<td><em>origin</em></td>\n<td></td>\n<td>The information which describes the origin of the record.</td>\n</tr>\n<tr>\n<td><em>preferredLanguage</em></td>\n<td>String</td>\n<td>Person's preferred language. Must be in two letter ISO (xx) or language-region BCP-47 (xx-YY) format.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["people","2","persons","contactInformation"],"host":["go2","vhdmedia","se"],"query":[{"key":"identifier","value":"janewilliams@example.com"},{"key":"type","value":"EMAIL"}],"variable":[]}},"response":[{"id":"abbfb56a-844a-4567-aee6-f85e005496e8","name":"Add contact information to person","originalRequest":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n  \"contactInformation\": {\n    \"phone\": [\n      {\n        \"number\": \"4670123456\"\n      }\n    ]\n  }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/2/persons/contactInformation?email=janewilliams@example.com","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","2","persons","contactInformation"],"query":[{"key":"email","value":"janewilliams@example.com"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"278"},{"key":"Date","value":"Thu, 18 May 2023 08:33:20 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684398800847491227"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"createdAt\": \"2023-05-17T13:47:52\",\n    \"modifiedAt\": \"2023-05-17T16:11:42\",\n    \"id\": 45,\n    \"firstName\": \"Jane\",\n    \"lastName\": \"Smith\",\n    \"type\": \"CUSTOMER\",\n    \"origin\": \"API\",\n    \"modifiedFrom\": \"API\",\n    \"contactInformation\": {\n        \"phone\": [\n            {\n                \"number\": \"4670123456\"\n            }\n        ],\n        \"email\": [\n            {\n                \"address\": \"janewilliams@example.com\"\n            }\n        ]\n    }\n}"}],"_postman_id":"d5e77329-3c42-40c3-8419-dfc962c2e299"},{"name":"Delete contact information to person","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"id\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","",""],"type":"text/javascript","packages":{}}}],"id":"334959ce-8423-45ed-bbd2-daf5f38aa819","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"DELETE","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"contactInformation\": {\n    \"email\": [\n      {\n        \"address\": \"jane.home@example.com\"\n      }\n    ]\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/persons/contactInformation?identifier=janewilliams@example.com&type=EMAIL","description":"<p>Use this method to delete specified emails and mobile phones from a particular person.</p>\n<h3 id=\"request-rate-limit\">Request rate limit</h3>\n<p>5 requests / second (per account)</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>phone</em></td>\n<td>string</td>\n<td>Example: phone=46701234567  <br />Person’s phone number. Phone numbers must be in international format.</td>\n</tr>\n<tr>\n<td>email</td>\n<td>string</td>\n<td>Example: email=<a href=\"mailto:name@example.com\">name@example.com</a>  <br />Person’s email address. Must comply with the email format and cannot exceed 255 characters. One person can have up to 100 email addresses.</td>\n</tr>\n<tr>\n<td>externalId</td>\n<td>string</td>\n<td>Example: externalId=6F9619FF-8B86-D011-B42D-00CF4FC964FF  <br />Unique ID for a person from your or another external system.</td>\n</tr>\n<tr>\n<td>pushRegistrationId</td>\n<td>string</td>\n<td>Example: pushRegistrationId=6F9619FF-8B86-D011-B42D-00CF4FC964FF  <br />Person's push registration ID.</td>\n</tr>\n<tr>\n<td>id</td>\n<td>integer</td>\n<td>Example: id=11351351  <br />Person's internal ID.</td>\n</tr>\n<tr>\n<td>lineId</td>\n<td>string</td>\n<td>Example: lineId=U045147f1ad961bfe996b72bbf417f3c9  <br />Person’s Line ID. To get person by Line OTT channel, you need to specify both lineId and lineSenderId parameters.</td>\n</tr>\n<tr>\n<td>lineSenderId</td>\n<td>string</td>\n<td>Example: lineSenderId=1644264921  <br />Person’s Line sender ID. To get person by Line OTT channel, you need to specify both lineId and lineSenderId parameter</td>\n</tr>\n<tr>\n<td>facebookId</td>\n<td>string</td>\n<td>Example: facebookId=370329180020364  <br />Person’s Facebook ID. To get person by Facebook OTT channel, you need to specify both facebookId and facebookSenderId parameters.</td>\n</tr>\n<tr>\n<td>facebookSenderId</td>\n<td>integer</td>\n<td>Example: facebookSenderId=2094832040560427  <br />Person’s Facebook sender ID. To get person by Facebook OTT channel, you need to specify both facebookId and facebookSenderId parameters.</td>\n</tr>\n<tr>\n<td>telegramUserId</td>\n<td>string</td>\n<td>Example: telegramUserId=1303201999  <br />Person’s Telegram user ID. To get person by Telegram OTT channel, you need to specify both telegramUserId and telegramBotId parameters.</td>\n</tr>\n<tr>\n<td>telegramBotId</td>\n<td>string</td>\n<td>Example: telegramBotId=1495032701  <br />Person’s Telegram bot ID. To get person by Telegram OTT channel, you need to specify both telegramUserId and telegramBotId parameters.</td>\n</tr>\n<tr>\n<td>viberBotUserId</td>\n<td>string</td>\n<td>Example: viberBotUserId=Upk26V/i1GXfvxZ8S41P/w==  <br />Person’s Viber Bot user ID. To get person by Viber Bot OTT channel, you need to specify both viberBotUserId and viberBotId parameters.</td>\n</tr>\n<tr>\n<td>viberBotId</td>\n<td><br />integer</td>\n<td>Example: viberBotId=5591458813882487336  <br />Person’s Viber Bot ID. To get person by Viber Bot OTT channel, you need to specify both viberBotUserId and viberBotId parameters.</td>\n</tr>\n<tr>\n<td>instagramId</td>\n<td>string</td>\n<td>Example: instagramId=17841546155331428  <br />Person’s Instagram user ID. To get person by Instagram channel, you need to specify both instagramId and instagramSenderId parameters.</td>\n</tr>\n<tr>\n<td>instagramSenderId</td>\n<td>integer</td>\n<td>Example: instagramSenderId=17841405793187218  <br />Person’s Instagram sender ID. To get person by Instagram channel, you need to specify both instagramId and instagramSenderId parameters.</td>\n</tr>\n<tr>\n<td>twitterId</td>\n<td>string</td>\n<td>example: twitterId=370329180020364  <br />Person’s Twitter user ID. To get person by Twitter channel, you need to specify both twitterId and twitterSenderId parameters.</td>\n</tr>\n<tr>\n<td>twitterSenderId</td>\n<td>integer</td>\n<td>Example: twitterSenderId=10765432100123456789  <br />Person’s Twitter sender ID. To get person by Twitter channel, you need to specify both twitterId and twitterSenderId parameters.</td>\n</tr>\n<tr>\n<td>appleBusinessChatId</td>\n<td>string</td>\n<td>Example: appleBusinessChatId=ef6ca8e9-3718-4dc9-a9a0-b4ac28d135ca  <br />Person’s Apple Business Chat ID. To get person by Apple BC channel, you need to specify both appleBusinessChatId and appleBusinessChatSenderId parameters.</td>\n</tr>\n<tr>\n<td>appleBusinessChatSenderId</td>\n<td>string</td>\n<td>Example: appleBusinessChatSenderId=urn:mbid:AQAAYyUbut3B2E3T9GLv4EaF/  <br />Person’s Apple Business Chat sender ID. To get person by Apple BC channel, you need to specify both appleBusinessChatId and appleBusinessChatSenderId parameters.</td>\n</tr>\n<tr>\n<td>liveChatRegId</td>\n<td>string</td>\n<td>Example: liveChatRegId=79f9701b-e350-4497-9689-b2257864e63f</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>contactInformation  <br />{  <br />  <br />  <br />  <br />  <br />  <br />email  <br />[{  <br />  <br />  <br />  <br />  <br />address  <br />  <br />  <br />  <br />  <br />}] ,  <br />  <br />  <br />  <br />phone  <br />[{  <br />  <br />  <br />  <br />  <br />number  <br />  <br />  <br />  <br />  <br />  <br />}]  <br />}  <br />  <br />  <br /></td>\n<td>object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />  <br />string</td>\n<td>Required  <br />  <br />List of phones, emails and other information how a person can be contacted  <br />  <br />  <br />A list of person's email addresses. Max 100 emails per person.  <br />  <br />  <br />  <br />  <br />Person's email address. Must comply with the email format and cannot exceed 255characters. One person can have up to 100 email addresses.  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's phone numbers. Max 100 numbers per person.  <br />  <br />  <br />  <br />  <br />Person's phone number. Must be in international format and cannot exceed 50 characters. One person can have up to 100 phone numbers.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"responses\">Responses</h3>\n<p>Default sucesful response</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>address</td>\n<td>string</td>\n<td>Person's address, 256 characters max</td>\n</tr>\n<tr>\n<td>birthDate</td>\n<td>string</td>\n<td>Person's date of birth, format YYYY-MM-DD</td>\n</tr>\n<tr>\n<td>city</td>\n<td>string</td>\n<td>Person's city, 50 characters max</td>\n</tr>\n<tr>\n<td>computedAttributes  <br />{  <br />  <br />  <br />  <br />  <br />  <br />property name*  <br />{ }  <br />  <br />  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />  <br />  <br />  <br />object</td>\n<td>Person's computed attributes grouped by type</td>\n</tr>\n<tr>\n<td>contactInformation  <br />{  <br />  <br />  <br />  <br />  <br />  <br />email  <br />[{  <br />  <br />  <br />  <br />  <br />address  <br />  <br />  <br />  <br />  <br />}] ,  <br />  <br />  <br />  <br />phone  <br />[{  <br />  <br />  <br />  <br />  <br />number  <br />  <br />  <br />}] ,  <br />  <br />  <br />facebook  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />instagram  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />liveChat  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />telegram  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />viberBots  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />twitter  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />  <br />webpush  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />registrationId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />},  <br />  <br />additionalData  <br />{  <br />  <br />property name  <br />  <br />  <br />},  <br />  <br />push  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />registrationId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />},  <br />  <br />additionalData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />appleBusinessChat  <br />[{  <br />  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}],  <br />  <br />line  <br />[{  <br />  <br />  <br />applicationId,  <br />  <br />  <br />  <br />userId,  <br />  <br />  <br />  <br />  <br />systemData  <br />{  <br />  <br />property name  <br />  <br />  <br />}  <br />}]  <br />  <br />}  <br />  <br />  <br /></td>\n<td>object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />object  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br /></td>\n<td>Required  <br />  <br />List of phones, emails and other information how a person can be contacted  <br />  <br />  <br />A list of person's email addresses. Max 100 emails per person.  <br />  <br />  <br />  <br />  <br />Person's email address. Must comply with the email format and cannot exceed 255characters. One person can have up to 100 email addresses.  <br />  <br />  <br />  <br />  <br />  <br />A list of person's phone numbers. Max 100 numbers per person.  <br />  <br />  <br />  <br />  <br />Person's phone number. Must be in international format and cannot exceed 50 characters. One person can have up to 100 phone numbers.  <br />  <br />  <br />A list of person's Facebook destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Instagram destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Live Chat destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's telegram destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Viber Bots destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's twitter destinations.  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's web push registrations  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Push registration ID  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />Additional data collected from the destination  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's push registrations  <br />  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Push registration ID  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />Additional data collected from the destination  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Apple Business Chat destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />A list of person's Line destinations.  <br />  <br />  <br />  <br />Application Id on which the user is subscribed  <br />  <br />  <br />Unique user ID for a person  <br />  <br />  <br />  <br />  <br />System data collected from the user's profile  <br />  <br />  <br /></td>\n</tr>\n<tr>\n<td>country</td>\n<td>string</td>\n<td>Person's country, 50 characters max</td>\n</tr>\n<tr>\n<td>customAttributes  <br />{  <br />  <br />  <br />property name*  <br />{ }  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />object</td>\n<td>List of custom attributes for the person, 4096 characters max per value</td>\n</tr>\n<tr>\n<td>externalId</td>\n<td>string</td>\n<td>Unique ID for a person from your or another external system, 256 characters max</td>\n</tr>\n<tr>\n<td>firstName</td>\n<td>string</td>\n<td>Person's first name, 255 characters max</td>\n</tr>\n<tr>\n<td>gender</td>\n<td>string</td>\n<td>Enum: \"MALE\" \"FEMALE\"  <br />Person's gender</td>\n</tr>\n<tr>\n<td>integrations  <br />{  <br />  <br />salesforce  <br />{  <br />  <br />  <br />contactId  <br />  <br />  <br />leadId  <br />  <br />  <br />}  <br />}</td>\n<td>object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />string  <br />  <br />  <br />string  <br /></td>\n<td>Integrations  <br />  <br />  <br />Salesforce integration  <br />  <br />  <br />  <br />Salesforce contact id  <br />  <br />  <br />Salesforce lead id</td>\n</tr>\n<tr>\n<td>lastName</td>\n<td>string</td>\n<td>Person's last name, 255 characters max</td>\n</tr>\n<tr>\n<td>middleName</td>\n<td>string</td>\n<td>Person's middle name, 50 characters max</td>\n</tr>\n<tr>\n<td>profilePicture</td>\n<td>string</td>\n<td>URL for the person's profile picture, 2083 characters max</td>\n</tr>\n<tr>\n<td>tags</td>\n<td>array of  <br />strings</td>\n<td>List of tags that this person has</td>\n</tr>\n<tr>\n<td>type</td>\n<td>string</td>\n<td>Enum: \"CUSTOMER\" \"LEAD\"  <br />Person's type, default type is CUSTOMER</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-responses\">Error responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>requestError</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>serviceException</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>Identifier of the error</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Detailed error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-parameters\">Additional parameters</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>identifier</em></td>\n<td>String</td>\n<td>Person ID. ID type must match the <code>type</code> parameter. Some channels (e,g., Apple Business Chat) use identifiers that contain unsafe characters. Make sure you URL-encode them in your API request</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-request-fields\">Additional request fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>contactInformation.instagramDm</em></td>\n<td>Array</td>\n<td>A list of person's Instagram DM destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.kakaoSangdam</em></td>\n<td>Array</td>\n<td>A list of person's Kakao Sangdam destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.kakaoTalk</em></td>\n<td>Array</td>\n<td>A list of person's KakaoTalk destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.openChannel</em></td>\n<td>Array</td>\n<td>A list of person's Open Channel destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.push[].isPrimary</em></td>\n<td>Boolean</td>\n<td>Set to true if this device is a primary device of a user among other devices.</td>\n</tr>\n<tr>\n<td><em>contactInformation.tiktokBm</em></td>\n<td>Array</td>\n<td>A list of person's TikTok Business Messaging destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.whatsapp</em></td>\n<td>Array</td>\n<td>A list of person's WhatsApp destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.zaloFollower</em></td>\n<td>Array</td>\n<td>A list of person's Zalo Follower destinations.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-response-fields\">Additional response fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>contactInformation.instagramDm</em></td>\n<td>Array</td>\n<td>A list of person's Instagram DM destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.kakaoSangdam</em></td>\n<td>Array</td>\n<td>A list of person's Kakao Sangdam destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.kakaoTalk</em></td>\n<td>Array</td>\n<td>A list of person's KakaoTalk destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.openChannel</em></td>\n<td>Array</td>\n<td>A list of person's Open Channel destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.push[].isPrimary</em></td>\n<td>Boolean</td>\n<td>Set to true if this device is a primary device of a user among other devices.</td>\n</tr>\n<tr>\n<td><em>contactInformation.tiktokBm</em></td>\n<td>Array</td>\n<td>A list of person's TikTok Business Messaging destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.whatsapp</em></td>\n<td>Array</td>\n<td>A list of person's WhatsApp destinations.</td>\n</tr>\n<tr>\n<td><em>contactInformation.zaloFollower</em></td>\n<td>Array</td>\n<td>A list of person's Zalo Follower destinations.</td>\n</tr>\n<tr>\n<td><em>createdAt</em></td>\n<td>String</td>\n<td>Date and time of creation. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td><em>modifiedAt</em></td>\n<td>String</td>\n<td>Date and time of last modification. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td><em>modifiedFrom</em></td>\n<td></td>\n<td>The information which describes the source of the last modification of record.</td>\n</tr>\n<tr>\n<td><em>origin</em></td>\n<td></td>\n<td>The information which describes the origin of the record.</td>\n</tr>\n<tr>\n<td><em>preferredLanguage</em></td>\n<td>String</td>\n<td>Person's preferred language. Must be in two letter ISO (xx) or language-region BCP-47 (xx-YY) format.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["people","2","persons","contactInformation"],"host":["go2","vhdmedia","se"],"query":[{"key":"identifier","value":"janewilliams@example.com"},{"key":"type","value":"EMAIL"}],"variable":[]}},"response":[{"id":"dd673f37-5e29-4fea-bc46-ef881105ffc1","name":"Delete contact information to person","originalRequest":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n  \"contactInformation\": {\n    \"phone\": [\n      {\n        \"number\": \"4670123456\"\n      }\n    ]\n  }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/2/persons/contactInformation?email=janewilliams@example.com","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","2","persons","contactInformation"],"query":[{"key":"email","value":"janewilliams@example.com"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"242"},{"key":"Date","value":"Wed, 17 May 2023 16:11:41 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684339902304252226"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"createdAt\": \"2023-05-17T13:47:52\",\n    \"modifiedAt\": \"2023-05-17T15:58:57\",\n    \"id\": 45,\n    \"firstName\": \"Jane\",\n    \"lastName\": \"Smith\",\n    \"type\": \"CUSTOMER\",\n    \"origin\": \"API\",\n    \"modifiedFrom\": \"API\",\n    \"contactInformation\": {\n        \"email\": [\n            {\n                \"address\": \"janewilliams@example.com\"\n            }\n        ]\n    }\n}"}],"_postman_id":"334959ce-8423-45ed-bbd2-daf5f38aa819"},{"name":"Batch people create","event":[{"listen":"test","script":{"exec":["// Tests for Batch people create.","pm.test(\"Status code is 200 or 207\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200, 207]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","// The response body is empty (null) when everything succeeds, or lists a result for each item.","pm.test(\"Response is empty or contains the 'results' array\", function () {","    var text = pm.response.text();","    if (text && text.trim() !== 'null') {","        pm.expect(pm.response.json()).to.have.property('results').that.is.an('array');","    }","});",""],"type":"text/javascript","packages":{}}}],"id":"ec440413-e73f-4d3a-89ac-ca73296c3eb1","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"people\": [\n    {\n      \"firstName\": \"Jane\",\n      \"lastName\": \"Smith Two\",\n      \"contactInformation\": {\n        \"email\": [\n          {\n            \"address\": \"janesmith@example.com\"\n          }\n        ]\n      }\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/persons/batch","description":"<p>Use this method to create multiple persons.<br /><strong>NOTE</strong> Array size of the batch create request is limited to <code>1000</code> persons</p>\n<h3 id=\"request-rate-limit\">Request rate limit</h3>\n<p>5 requests / second (per account)</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>people</em></td>\n<td>array of objects</td>\n<td>List of people</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"responses\">Responses</h3>\n<p>Default sucesful response</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>results</td>\n<td>array of objects</td>\n<td>List of any unsuccessful result from the batch operation for each processed entry. Example, email used in the request already exists.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-responses\">Error responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>requestError</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>serviceException</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>Identifier of the error</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Detailed error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-request-fields\">Additional request fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>people[].address</em></td>\n<td>String</td>\n<td>Person's address, 256 characters max.</td>\n</tr>\n<tr>\n<td><em>people[].birthDate</em></td>\n<td>String</td>\n<td>Person's date of birth, format <code>YYYY-MM-DD</code>.</td>\n</tr>\n<tr>\n<td><em>people[].city</em></td>\n<td>String</td>\n<td>Person's city, 50 characters max.</td>\n</tr>\n<tr>\n<td><em>people[].computedAttributes</em></td>\n<td>Object</td>\n<td>Person's computed attributes grouped by type.</td>\n</tr>\n<tr>\n<td><em>people[].contactInformation</em></td>\n<td></td>\n<td>List of phones, emails and other information how a person can be contacted.</td>\n</tr>\n<tr>\n<td><em>people[].contactInformation.appleBusinessChat</em></td>\n<td>Array</td>\n<td>A list of person's Apple Business Chat destinations.</td>\n</tr>\n<tr>\n<td><em>people[].contactInformation.appleBusinessChat[].applicationId</em></td>\n<td>String</td>\n<td>Application Id on which the user is subscribed.</td>\n</tr>\n<tr>\n<td><em>people[].contactInformation.appleBusinessChat[].systemData</em></td>\n<td>Object</td>\n<td>System data collected from the user's profile.</td>\n</tr>\n<tr>\n<td><em>people[].contactInformation.appleBusinessChat[].userId</em></td>\n<td>String</td>\n<td>Unique user ID for a person.</td>\n</tr>\n<tr>\n<td><em>people[].contactInformation.facebook</em></td>\n<td>Array</td>\n<td>A list of person's Messenger destinations.</td>\n</tr>\n<tr>\n<td><em>people[].contactInformation.instagram</em></td>\n<td>Array</td>\n<td>A list of person's Instagram destinations.</td>\n</tr>\n<tr>\n<td><em>people[].contactInformation.instagramDm</em></td>\n<td>Array</td>\n<td>A list of person's Instagram DM destinations.</td>\n</tr>\n<tr>\n<td><em>people[].contactInformation.kakaoSangdam</em></td>\n<td>Array</td>\n<td>A list of person's Kakao Sangdam destinations.</td>\n</tr>\n<tr>\n<td><em>people[].contactInformation.kakaoTalk</em></td>\n<td>Array</td>\n<td>A list of person's KakaoTalk destinations.</td>\n</tr>\n<tr>\n<td><em>people[].contactInformation.line</em></td>\n<td>Array</td>\n<td>A list of person's Line destinations.</td>\n</tr>\n<tr>\n<td><em>people[].contactInformation.liveChat</em></td>\n<td>Array</td>\n<td>A list of person's Live Chat destinations.</td>\n</tr>\n<tr>\n<td><em>people[].contactInformation.openChannel</em></td>\n<td>Array</td>\n<td>A list of person's Open Channel destinations.</td>\n</tr>\n<tr>\n<td><em>people[].contactInformation.phone</em></td>\n<td>Array</td>\n<td>A list of person's phone numbers. Max 100 numbers per person.</td>\n</tr>\n<tr>\n<td><em>people[].contactInformation.phone[].number</em></td>\n<td>String</td>\n<td>Person's phone number. Must be in international format and cannot exceed 50 characters. One person can have up to 100 phone numbers.</td>\n</tr>\n<tr>\n<td><em>people[].contactInformation.push</em></td>\n<td>Array</td>\n<td>List of person's push registrations.</td>\n</tr>\n<tr>\n<td><em>people[].contactInformation.push[].additionalData</em></td>\n<td>Object</td>\n<td>Additional data collected from the user's profile</td>\n</tr>\n<tr>\n<td><em>people[].contactInformation.push[].isPrimary</em></td>\n<td>Boolean</td>\n<td>Set to true if this device is a primary device of a user among other devices.</td>\n</tr>\n<tr>\n<td><em>people[].contactInformation.push[].registrationId</em></td>\n<td>String</td>\n<td>Push registration ID.</td>\n</tr>\n<tr>\n<td><em>people[].contactInformation.telegram</em></td>\n<td>Array</td>\n<td>A list of person's Telegram destinations.</td>\n</tr>\n<tr>\n<td><em>people[].contactInformation.tiktokBm</em></td>\n<td>Array</td>\n<td>A list of person's TikTok Business Messaging destinations.</td>\n</tr>\n<tr>\n<td><em>people[].contactInformation.twitter</em></td>\n<td>Array</td>\n<td>A list of person's Twitter destinations.</td>\n</tr>\n<tr>\n<td><em>people[].contactInformation.viberBots</em></td>\n<td>Array</td>\n<td>A list of person's Viber Bots destinations.</td>\n</tr>\n<tr>\n<td><em>people[].contactInformation.webpush</em></td>\n<td>Array</td>\n<td>A list of person's web push registrations</td>\n</tr>\n<tr>\n<td><em>people[].contactInformation.whatsapp</em></td>\n<td>Array</td>\n<td>A list of person's WhatsApp destinations.</td>\n</tr>\n<tr>\n<td><em>people[].contactInformation.zaloFollower</em></td>\n<td>Array</td>\n<td>A list of person's Zalo Follower destinations.</td>\n</tr>\n<tr>\n<td><em>people[].country</em></td>\n<td>String</td>\n<td>Person's country, 50 characters max.</td>\n</tr>\n<tr>\n<td><em>people[].createdAt</em></td>\n<td>String</td>\n<td>Date and time of creation. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td><em>people[].customAttributes</em></td>\n<td>Object</td>\n<td>List of custom attributes for the person, 4096 characters max per value.</td>\n</tr>\n<tr>\n<td><em>people[].externalId</em></td>\n<td>String</td>\n<td>Unique ID for a person from your or another external system, 256 characters max.</td>\n</tr>\n<tr>\n<td><em>people[].firstName</em></td>\n<td>String</td>\n<td>Person's first name, 255 characters max.</td>\n</tr>\n<tr>\n<td><em>people[].gender</em></td>\n<td></td>\n<td>Person's gender.</td>\n</tr>\n<tr>\n<td><em>people[].id</em></td>\n<td>Int</td>\n<td>Unique id of the entity.</td>\n</tr>\n<tr>\n<td><em>people[].integrations</em></td>\n<td></td>\n<td>Integrations.</td>\n</tr>\n<tr>\n<td><em>people[].integrations.salesforce</em></td>\n<td></td>\n<td>Salesforce integration.</td>\n</tr>\n<tr>\n<td><em>people[].integrations.salesforce.contactId</em></td>\n<td>String</td>\n<td>Salesforce contact id.</td>\n</tr>\n<tr>\n<td><em>people[].integrations.salesforce.leadId</em></td>\n<td>String</td>\n<td>Salesforce lead id.</td>\n</tr>\n<tr>\n<td><em>people[].lastName</em></td>\n<td>String</td>\n<td>Person's last name, 255 characters max.</td>\n</tr>\n<tr>\n<td><em>people[].middleName</em></td>\n<td>String</td>\n<td>Person's middle name, 50 characters max.</td>\n</tr>\n<tr>\n<td><em>people[].modifiedAt</em></td>\n<td>String</td>\n<td>Date and time of last modification. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td><em>people[].modifiedFrom</em></td>\n<td></td>\n<td>The information which describes the source of the last modification of record.</td>\n</tr>\n<tr>\n<td><em>people[].origin</em></td>\n<td></td>\n<td>The information which describes the origin of the record.</td>\n</tr>\n<tr>\n<td><em>people[].preferredLanguage</em></td>\n<td>String</td>\n<td>Person's preferred language. Must be in two letter ISO (xx) or language-region BCP-47 (xx-YY) format.</td>\n</tr>\n<tr>\n<td><em>people[].profilePicture</em></td>\n<td>String</td>\n<td>URL for the person's profile picture, 2083 characters max.</td>\n</tr>\n<tr>\n<td><em>people[].tags</em></td>\n<td>Array</td>\n<td>List of tags that this person has.</td>\n</tr>\n<tr>\n<td><em>people[].type</em></td>\n<td></td>\n<td>Person's type, default type is CUSTOMER.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-response-fields\">Additional response fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results[].errors</em></td>\n<td>Array</td>\n<td>List of errors</td>\n</tr>\n<tr>\n<td><em>results[].index</em></td>\n<td>Int</td>\n<td>Index of person in request list</td>\n</tr>\n<tr>\n<td><em>results[].status</em></td>\n<td>Int</td>\n<td>HTTP status</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["people","2","persons","batch"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"5d5dc4a8-10f2-45f4-bccf-0ab4464658a0","name":"Batch people create","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n\"people\": [\n{\n\"firstName\": \"Jane\",\n\"lastName\": \"Smith\",\n\"customAttributes\": {\n\"Contract Expiry\": \"2023-06-01\",\n\"Company\": \"Example\",\n\"ShoppingCartList\": [\n{\n\"productName\": \"Sneakers\",\n\"productPrice\": 25.33,\n\"productCategory\": \"Sport Sneakers\",\n\"productImage\": \"/image1.png\"\n},\n{\n\"productName\": \"T-Shirt\",\n\"productPrice\": 9.99,\n\"productCategory\": \"Casual\",\n\"productImage\": \"/image2.png\"\n}\n]\n},\n\"contactInformation\": {\n\"email\": [\n{\n\"address\": \"janem@example.com\"\n}\n]\n}\n},\n{\n\"firstName\": \"Jane\",\n\"lastName\": \"Will\",\n\"customAttributes\": {\n\"Contract Expiry\": \"2023-06-01\",\n\"Company\": \"Acme\",\n\"ShoppingCartList\": [\n{\n\"productName\": \"Sneakers\",\n\"productPrice\": 25.33,\n\"productCategory\": \"Sport Sneakers\",\n\"productImage\": \"/image1.png\"\n},\n{\n\"productName\": \"T-Shirt\",\n\"productPrice\": 9.99,\n\"productCategory\": \"Casual\",\n\"productImage\": \"/image2.png\"\n}\n]\n},\n\"contactInformation\": {\n\"email\": [\n{\n\"address\": \"janewil@example.com\"\n}\n]\n}\n}\n]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/persons/batch"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"4"},{"key":"Date","value":"Thu, 18 May 2023 10:15:09 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684404910068137829"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"null"}],"_postman_id":"ec440413-e73f-4d3a-89ac-ca73296c3eb1"},{"name":"Batch people update","event":[{"listen":"test","script":{"exec":["// Tests for Batch people update.","pm.test(\"Status code is 200 or 207\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200, 207]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","// The response body is empty (null) when everything succeeds, or lists a result for each item.","pm.test(\"Response is empty or contains the 'results' array\", function () {","    var text = pm.response.text();","    if (text && text.trim() !== 'null') {","        pm.expect(pm.response.json()).to.have.property('results').that.is.an('array');","    }","});",""],"type":"text/javascript","packages":{}}}],"id":"8ef9f7d0-c62a-42a0-ad56-843cce09e83f","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"people\": [\n    {\n      \"query\": {\n        \"email\": \"janesmith@example.com\"\n      },\n      \"update\": {\n        \"lastName\": \"Smith Updated\"\n      }\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/persons/batch","description":"<p>Use this method to update multiple persons.<br /><strong>NOTE</strong> Array size of the batch update request is limited to <code>1000</code> persons.</p>\n<h3 id=\"request-rate-limit\">Request rate limit</h3>\n<p>5 requests / second (per account)</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>people</em></td>\n<td>array of objects</td>\n<td>List of people</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"responses\">Responses</h3>\n<p>Default sucesful response</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>results</td>\n<td>array of objects</td>\n<td>List of any unsuccessful result from the batch operation for each processed entry. Example, email used in the request already exists.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-responses\">Error responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>requestError</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>serviceException</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>Identifier of the error</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Detailed error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-request-fields\">Additional request fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>people[].query</em></td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td><em>people[].query.identifier</em></td>\n<td>String</td>\n<td>Person ID. ID type must match the <code>type</code> parameter. Some channels (e,g., Apple Business Chat) use identifiers that contain unsafe characters. Make sure you URL-encode them in your API request</td>\n</tr>\n<tr>\n<td><em>people[].query.sender</em></td>\n<td>String</td>\n<td>Sender or application ID. <code>sender</code> is required for all identifier types except <code>ID</code>, <code>EXTERNAL_ID</code>, <code>PHONE</code>, <code>EMAIL</code>.</td>\n</tr>\n<tr>\n<td><em>people[].query.type</em></td>\n<td></td>\n<td>Type of the person ID. Can be one of the above</td>\n</tr>\n<tr>\n<td><em>people[].update.address</em></td>\n<td>String</td>\n<td>Person's address, 256 characters max.</td>\n</tr>\n<tr>\n<td><em>people[].update.birthDate</em></td>\n<td>String</td>\n<td>Person's date of birth, format <code>YYYY-MM-DD</code>.</td>\n</tr>\n<tr>\n<td><em>people[].update.city</em></td>\n<td>String</td>\n<td>Person's city, 50 characters max.</td>\n</tr>\n<tr>\n<td><em>people[].update.computedAttributes</em></td>\n<td>Object</td>\n<td>Person's computed attributes grouped by type.</td>\n</tr>\n<tr>\n<td><em>people[].update.contactInformation</em></td>\n<td></td>\n<td>List of phones, emails and other information how a person can be contacted.</td>\n</tr>\n<tr>\n<td><em>people[].update.contactInformation.appleBusinessChat</em></td>\n<td>Array</td>\n<td>A list of person's Apple Business Chat destinations.</td>\n</tr>\n<tr>\n<td><em>people[].update.contactInformation.appleBusinessChat[].applicationId</em></td>\n<td>String</td>\n<td>Application Id on which the user is subscribed.</td>\n</tr>\n<tr>\n<td><em>people[].update.contactInformation.appleBusinessChat[].systemData</em></td>\n<td>Object</td>\n<td>System data collected from the user's profile.</td>\n</tr>\n<tr>\n<td><em>people[].update.contactInformation.appleBusinessChat[].userId</em></td>\n<td>String</td>\n<td>Unique user ID for a person.</td>\n</tr>\n<tr>\n<td><em>people[].update.contactInformation.facebook</em></td>\n<td>Array</td>\n<td>A list of person's Messenger destinations.</td>\n</tr>\n<tr>\n<td><em>people[].update.contactInformation.instagram</em></td>\n<td>Array</td>\n<td>A list of person's Instagram destinations.</td>\n</tr>\n<tr>\n<td><em>people[].update.contactInformation.instagramDm</em></td>\n<td>Array</td>\n<td>A list of person's Instagram DM destinations.</td>\n</tr>\n<tr>\n<td><em>people[].update.contactInformation.kakaoSangdam</em></td>\n<td>Array</td>\n<td>A list of person's Kakao Sangdam destinations.</td>\n</tr>\n<tr>\n<td><em>people[].update.contactInformation.kakaoTalk</em></td>\n<td>Array</td>\n<td>A list of person's KakaoTalk destinations.</td>\n</tr>\n<tr>\n<td><em>people[].update.contactInformation.line</em></td>\n<td>Array</td>\n<td>A list of person's Line destinations.</td>\n</tr>\n<tr>\n<td><em>people[].update.contactInformation.liveChat</em></td>\n<td>Array</td>\n<td>A list of person's Live Chat destinations.</td>\n</tr>\n<tr>\n<td><em>people[].update.contactInformation.openChannel</em></td>\n<td>Array</td>\n<td>A list of person's Open Channel destinations.</td>\n</tr>\n<tr>\n<td><em>people[].update.contactInformation.phone</em></td>\n<td>Array</td>\n<td>A list of person's phone numbers. Max 100 numbers per person.</td>\n</tr>\n<tr>\n<td><em>people[].update.contactInformation.phone[].number</em></td>\n<td>String</td>\n<td>Person's phone number. Must be in international format and cannot exceed 50 characters. One person can have up to 100 phone numbers.</td>\n</tr>\n<tr>\n<td><em>people[].update.contactInformation.push</em></td>\n<td>Array</td>\n<td>List of person's push registrations.</td>\n</tr>\n<tr>\n<td><em>people[].update.contactInformation.push[].additionalData</em></td>\n<td>Object</td>\n<td>Additional data collected from the user's profile</td>\n</tr>\n<tr>\n<td><em>people[].update.contactInformation.push[].isPrimary</em></td>\n<td>Boolean</td>\n<td>Set to true if this device is a primary device of a user among other devices.</td>\n</tr>\n<tr>\n<td><em>people[].update.contactInformation.push[].registrationId</em></td>\n<td>String</td>\n<td>Push registration ID.</td>\n</tr>\n<tr>\n<td><em>people[].update.contactInformation.telegram</em></td>\n<td>Array</td>\n<td>A list of person's Telegram destinations.</td>\n</tr>\n<tr>\n<td><em>people[].update.contactInformation.tiktokBm</em></td>\n<td>Array</td>\n<td>A list of person's TikTok Business Messaging destinations.</td>\n</tr>\n<tr>\n<td><em>people[].update.contactInformation.twitter</em></td>\n<td>Array</td>\n<td>A list of person's Twitter destinations.</td>\n</tr>\n<tr>\n<td><em>people[].update.contactInformation.viberBots</em></td>\n<td>Array</td>\n<td>A list of person's Viber Bots destinations.</td>\n</tr>\n<tr>\n<td><em>people[].update.contactInformation.webpush</em></td>\n<td>Array</td>\n<td>A list of person's web push registrations</td>\n</tr>\n<tr>\n<td><em>people[].update.contactInformation.whatsapp</em></td>\n<td>Array</td>\n<td>A list of person's WhatsApp destinations.</td>\n</tr>\n<tr>\n<td><em>people[].update.contactInformation.zaloFollower</em></td>\n<td>Array</td>\n<td>A list of person's Zalo Follower destinations.</td>\n</tr>\n<tr>\n<td><em>people[].update.country</em></td>\n<td>String</td>\n<td>Person's country, 50 characters max.</td>\n</tr>\n<tr>\n<td><em>people[].update.createdAt</em></td>\n<td>String</td>\n<td>Date and time of creation. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td><em>people[].update.customAttributes</em></td>\n<td>Object</td>\n<td>List of custom attributes for the person, 4096 characters max per value.</td>\n</tr>\n<tr>\n<td><em>people[].update.externalId</em></td>\n<td>String</td>\n<td>Unique ID for a person from your or another external system, 256 characters max.</td>\n</tr>\n<tr>\n<td><em>people[].update.firstName</em></td>\n<td>String</td>\n<td>Person's first name, 255 characters max.</td>\n</tr>\n<tr>\n<td><em>people[].update.gender</em></td>\n<td></td>\n<td>Person's gender.</td>\n</tr>\n<tr>\n<td><em>people[].update.id</em></td>\n<td>Int</td>\n<td>Unique id of the entity.</td>\n</tr>\n<tr>\n<td><em>people[].update.integrations</em></td>\n<td></td>\n<td>Integrations.</td>\n</tr>\n<tr>\n<td><em>people[].update.integrations.salesforce</em></td>\n<td></td>\n<td>Salesforce integration.</td>\n</tr>\n<tr>\n<td><em>people[].update.integrations.salesforce.contactId</em></td>\n<td>String</td>\n<td>Salesforce contact id.</td>\n</tr>\n<tr>\n<td><em>people[].update.integrations.salesforce.leadId</em></td>\n<td>String</td>\n<td>Salesforce lead id.</td>\n</tr>\n<tr>\n<td><em>people[].update.lastName</em></td>\n<td>String</td>\n<td>Person's last name, 255 characters max.</td>\n</tr>\n<tr>\n<td><em>people[].update.middleName</em></td>\n<td>String</td>\n<td>Person's middle name, 50 characters max.</td>\n</tr>\n<tr>\n<td><em>people[].update.modifiedAt</em></td>\n<td>String</td>\n<td>Date and time of last modification. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td><em>people[].update.modifiedFrom</em></td>\n<td></td>\n<td>The information which describes the source of the last modification of record.</td>\n</tr>\n<tr>\n<td><em>people[].update.origin</em></td>\n<td></td>\n<td>The information which describes the origin of the record.</td>\n</tr>\n<tr>\n<td><em>people[].update.preferredLanguage</em></td>\n<td>String</td>\n<td>Person's preferred language. Must be in two letter ISO (xx) or language-region BCP-47 (xx-YY) format.</td>\n</tr>\n<tr>\n<td><em>people[].update.profilePicture</em></td>\n<td>String</td>\n<td>URL for the person's profile picture, 2083 characters max.</td>\n</tr>\n<tr>\n<td><em>people[].update.tags</em></td>\n<td>Array</td>\n<td>List of tags that this person has.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-response-fields\">Additional response fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results[].errors</em></td>\n<td>Array</td>\n<td>List of errors</td>\n</tr>\n<tr>\n<td><em>results[].isModified</em></td>\n<td>Boolean</td>\n<td></td>\n</tr>\n<tr>\n<td><em>results[].query</em></td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td><em>results[].query.identifier</em></td>\n<td>String</td>\n<td>Person ID. ID type must match the <code>type</code> parameter. Some channels (e,g., Apple Business Chat) use identifiers that contain unsafe characters. Make sure you URL-encode them in your API request</td>\n</tr>\n<tr>\n<td><em>results[].query.sender</em></td>\n<td>String</td>\n<td>Sender or application ID. <code>sender</code> is required for all identifier types except <code>ID</code>, <code>EXTERNAL_ID</code>, <code>PHONE</code>, <code>EMAIL</code>.</td>\n</tr>\n<tr>\n<td><em>results[].query.type</em></td>\n<td></td>\n<td>Type of the person ID. Can be one of the above</td>\n</tr>\n<tr>\n<td><em>results[].status</em></td>\n<td>Int</td>\n<td>HTTP status</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["people","2","persons","batch"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"a2d91162-a1ce-43b8-8626-7a5ca69f3097","name":"Batch people update","originalRequest":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"\n{\n\"people\": [\n{\n\"query\": {\n\"phone\": \"4670123456\"\n},\n\"update\": {\n\"firstName\": \"`Don\",\n\"lastName\": \"Smith\"\n}\n},\n{\n\"query\": {\n\"email\": \"janesmith@example.com\"\n},\n\"update\": {\n\"firstName\": \"Jan\",\n\"lastName\": \"S\"\n}\n}\n]\n}\n","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/persons/batch"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"4"},{"key":"Date","value":"Thu, 18 May 2023 10:35:13 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684406114221175836"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"null"}],"_postman_id":"8ef9f7d0-c62a-42a0-ad56-843cce09e83f"},{"name":"Match profiles","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"matches\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","","pm.test(\"'matches' is an array\", function () {","    pm.expect(responseBody[\"matches\"]).to.be.an('array');","});"],"type":"text/javascript","packages":{}}}],"id":"20d08088-0a2b-43f1-8f3f-77bc2de36f57","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"identities\": [\n    {\n      \"type\": \"EMAIL\",\n      \"identifier\": \"janewilliams@example.com\"\n    },\n    {\n      \"type\": \"EMAIL\",\n      \"identifier\": \"janesmith@example.com\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/persons/match","description":"<p>Match profiles.</p>\n<p>Use this method to match a list of identities against existing person profiles in People. For each successfully matched identity the internal ID of the person profile will be returned. Duplicate identities will fetch a single profile reference.</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>identities</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> List of identities.</td>\n</tr>\n<tr>\n<td><em>identities[].type</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Type of the person ID. Can be one of the above. One of: <code>ID</code>, <code>EXTERNAL_ID</code>, <code>PHONE</code>, <code>EMAIL</code>, <code>LINE</code>, <code>FACEBOOK</code>, <code>TELEGRAM</code>, <code>PUSH</code>, <code>LIVE_CHAT</code>, <code>VIBER_BOTS</code>, <code>INSTAGRAM</code>, <code>INSTAGRAM_DM</code>, <code>TWITTER</code>, <code>APPLE_BUSINESS_CHAT</code>, <code>KAKAO_SANGDAM</code>, <code>OPEN_CHANNEL</code>, <code>ZALO_FOLLOWER</code>, <code>TIKTOK_BM</code>, <code>WHATSAPP</code>, <code>KAKAO_TALK</code>.</td>\n</tr>\n<tr>\n<td><em>identities[].identifier</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Person ID. ID type must match the <code>type</code> parameter.</td>\n</tr>\n<tr>\n<td><em>identities[].sender</em></td>\n<td>String</td>\n<td>Sender or application ID.<code>sender</code> is required for all identifier types except <code>ID</code>, <code>EXTERNAL_ID</code>, <code>PHONE</code>, <code>EMAIL</code></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>matches</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> List of matches.</td>\n</tr>\n<tr>\n<td><em>matches[].personId</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Person's internal ID.</td>\n</tr>\n<tr>\n<td><em>matches[].type</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Type of the person ID. Can be one of the above. One of: <code>ID</code>, <code>EXTERNAL_ID</code>, <code>PHONE</code>, <code>EMAIL</code>, <code>LINE</code>, <code>FACEBOOK</code>, <code>TELEGRAM</code>, <code>PUSH</code>, <code>LIVE_CHAT</code>, <code>VIBER_BOTS</code>, <code>INSTAGRAM</code>, <code>INSTAGRAM_DM</code>, <code>TWITTER</code>, <code>APPLE_BUSINESS_CHAT</code>, <code>KAKAO_SANGDAM</code>, <code>OPEN_CHANNEL</code>, <code>ZALO_FOLLOWER</code>, <code>TIKTOK_BM</code>, <code>WHATSAPP</code>, <code>KAKAO_TALK</code>.</td>\n</tr>\n<tr>\n<td><em>matches[].identifier</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Person ID</td>\n</tr>\n<tr>\n<td><em>matches[].sender</em></td>\n<td>String</td>\n<td>Sender or application ID.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["people","2","persons","match"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"d236ac85-fefa-49e9-94b8-ee3499af3b79","name":"200 - Response example","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"identities\": [\n    {\n      \"type\": \"EXTERNAL_ID\",\n      \"identifier\": \"XXX\"\n    },\n    {\n      \"type\": \"PHONE\",\n      \"identifier\": \"XXXXXXXXXXX\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/persons/match"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"matches\": [\n    {\n      \"type\": \"EMAIL\",\n      \"identifier\": \"example@example.com\",\n      \"personId\": 1\n    },\n    {\n      \"type\": \"PUSH\",\n      \"identifier\": \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\n      \"sender\": \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\n      \"personId\": 2\n    }\n  ]\n}"},{"id":"fd81d30a-2f5c-46a0-b69f-501e45f938bf","name":"401 - Example","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"identities\": [\n    {\n      \"type\": \"EXTERNAL_ID\",\n      \"identifier\": \"XXX\"\n    },\n    {\n      \"type\": \"PHONE\",\n      \"identifier\": \"XXXXXXXXXXX\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/persons/match"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"2eb40cd1-bc2c-4c90-9517-610a0c0ec35b","name":"403 - Example","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"identities\": [\n    {\n      \"type\": \"EXTERNAL_ID\",\n      \"identifier\": \"XXX\"\n    },\n    {\n      \"type\": \"PHONE\",\n      \"identifier\": \"XXXXXXXXXXX\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/persons/match"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"2d456f68-8160-45e0-a3db-5f0dfb5f5371","name":"429 - Example","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"identities\": [\n    {\n      \"type\": \"EXTERNAL_ID\",\n      \"identifier\": \"XXX\"\n    },\n    {\n      \"type\": \"PHONE\",\n      \"identifier\": \"XXXXXXXXXXX\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/persons/match"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"27c84989-7792-4b2d-ba9c-931413dc05f0","name":"500 - Example","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"identities\": [\n    {\n      \"type\": \"EXTERNAL_ID\",\n      \"identifier\": \"XXX\"\n    },\n    {\n      \"type\": \"PHONE\",\n      \"identifier\": \"XXXXXXXXXXX\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/persons/match"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"20d08088-0a2b-43f1-8f3f-77bc2de36f57"},{"name":"Delete a person","event":[{"listen":"test","script":{"exec":["// Tests for this request (no success example is documented, so only the basics are checked).","pm.test(\"Status code is 200 or 204\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200, 204]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});"],"type":"text/javascript","packages":{}}}],"id":"e83ff2f4-da5c-4de5-bf62-a39e53a6899f","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"DELETE","header":[],"url":"https://go2.vhdmedia.se/people/2/persons?identifier=janesmith@example.com&type=EMAIL","description":"<p>Use this method to delete a person.</p>\n<h3 id=\"request-rate-limit\">Request rate limit</h3>\n<p>5 requests / second (per account)</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>phone</em></td>\n<td>string</td>\n<td>Example: phone=46701234567  <br />Person’s phone number. Phone numbers must be in international format.</td>\n</tr>\n<tr>\n<td>email</td>\n<td>string</td>\n<td>Example: email=<a href=\"mailto:name@example.com\">name@example.com</a>  <br />Person’s email address. Must comply with the email format and cannot exceed 255 characters. One person can have up to 100 email addresses.</td>\n</tr>\n<tr>\n<td>externalId</td>\n<td>string</td>\n<td>Example: externalId=6F9619FF-8B86-D011-B42D-00CF4FC964FF  <br />Unique ID for a person from your or another external system.</td>\n</tr>\n<tr>\n<td>pushRegistrationId</td>\n<td>string</td>\n<td>Example: pushRegistrationId=6F9619FF-8B86-D011-B42D-00CF4FC964FF  <br />Person's push registration ID.</td>\n</tr>\n<tr>\n<td>id</td>\n<td>integer</td>\n<td>Example: id=11351351  <br />Person's internal ID.</td>\n</tr>\n<tr>\n<td>lineId</td>\n<td>string</td>\n<td>Example: lineId=U045147f1ad961bfe996b72bbf417f3c9  <br />Person’s Line ID. To get person by Line OTT channel, you need to specify both lineId and lineSenderId parameters.</td>\n</tr>\n<tr>\n<td>lineSenderId</td>\n<td>string</td>\n<td>Example: lineSenderId=1644264921  <br />Person’s Line sender ID. To get person by Line OTT channel, you need to specify both lineId and lineSenderId parameter</td>\n</tr>\n<tr>\n<td>facebookId</td>\n<td>string</td>\n<td>Example: facebookId=370329180020364  <br />Person’s Facebook ID. To get person by Facebook OTT channel, you need to specify both facebookId and facebookSenderId parameters.</td>\n</tr>\n<tr>\n<td>facebookSenderId</td>\n<td>integer</td>\n<td>Example: facebookSenderId=2094832040560427  <br />Person’s Facebook sender ID. To get person by Facebook OTT channel, you need to specify both facebookId and facebookSenderId parameters.</td>\n</tr>\n<tr>\n<td>telegramUserId</td>\n<td>string</td>\n<td>Example: telegramUserId=1303201999  <br />Person’s Telegram user ID. To get person by Telegram OTT channel, you need to specify both telegramUserId and telegramBotId parameters.</td>\n</tr>\n<tr>\n<td>telegramBotId</td>\n<td>string</td>\n<td>Example: telegramBotId=1495032701  <br />Person’s Telegram bot ID. To get person by Telegram OTT channel, you need to specify both telegramUserId and telegramBotId parameters.</td>\n</tr>\n<tr>\n<td>viberBotUserId</td>\n<td>string</td>\n<td>Example: viberBotUserId=Upk26V/i1GXfvxZ8S41P/w==  <br />Person’s Viber Bot user ID. To get person by Viber Bot OTT channel, you need to specify both viberBotUserId and viberBotId parameters.</td>\n</tr>\n<tr>\n<td>viberBotId</td>\n<td><br />integer</td>\n<td>Example: viberBotId=5591458813882487336  <br />Person’s Viber Bot ID. To get person by Viber Bot OTT channel, you need to specify both viberBotUserId and viberBotId parameters.</td>\n</tr>\n<tr>\n<td>instagramId</td>\n<td>string</td>\n<td>Example: instagramId=17841546155331428  <br />Person’s Instagram user ID. To get person by Instagram channel, you need to specify both instagramId and instagramSenderId parameters.</td>\n</tr>\n<tr>\n<td>instagramSenderId</td>\n<td>integer</td>\n<td>Example: instagramSenderId=17841405793187218  <br />Person’s Instagram sender ID. To get person by Instagram channel, you need to specify both instagramId and instagramSenderId parameters.</td>\n</tr>\n<tr>\n<td>twitterId</td>\n<td>string</td>\n<td>example: twitterId=370329180020364  <br />Person’s Twitter user ID. To get person by Twitter channel, you need to specify both twitterId and twitterSenderId parameters.</td>\n</tr>\n<tr>\n<td>twitterSenderId</td>\n<td>integer</td>\n<td>Example: twitterSenderId=10765432100123456789  <br />Person’s Twitter sender ID. To get person by Twitter channel, you need to specify both twitterId and twitterSenderId parameters.</td>\n</tr>\n<tr>\n<td>appleBusinessChatId</td>\n<td>string</td>\n<td>Example: appleBusinessChatId=ef6ca8e9-3718-4dc9-a9a0-b4ac28d135ca  <br />Person’s Apple Business Chat ID. To get person by Apple BC channel, you need to specify both appleBusinessChatId and appleBusinessChatSenderId parameters.</td>\n</tr>\n<tr>\n<td>appleBusinessChatSenderId</td>\n<td>string</td>\n<td>Example: appleBusinessChatSenderId=urn:mbid:AQAAYyUbut3B2E3T9GLv4EaF/  <br />Person’s Apple Business Chat sender ID. To get person by Apple BC channel, you need to specify both appleBusinessChatId and appleBusinessChatSenderId parameters.</td>\n</tr>\n<tr>\n<td>liveChatRegId</td>\n<td>string</td>\n<td>Example: liveChatRegId=79f9701b-e350-4497-9689-b2257864e63f</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-responses\">Error responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>requestError</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>serviceException</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>Identifier of the error</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Detailed error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-parameters\">Additional parameters</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>identifier</em></td>\n<td>String</td>\n<td>Person ID. ID type must match the <code>type</code> parameter. Some channels (e,g., Apple Business Chat) use identifiers that contain unsafe characters. Make sure you URL-encode them in your API request</td>\n</tr>\n<tr>\n<td><em>type</em></td>\n<td>String</td>\n<td>Type of the person ID</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["people","2","persons"],"host":["go2","vhdmedia","se"],"query":[{"key":"identifier","value":"janesmith@example.com"},{"key":"type","value":"EMAIL"}],"variable":[]}},"response":[{"id":"79e53575-74ce-4a16-8482-3f25ffde9924","name":"Delete a person","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"https://go2.vhdmedia.se/people/2/persons?phone=4670123456&email=name@example.com&externalId=6F9619FF-8B86-D011-B42D-00CF4FC964FF&pushRegistrationId=6F9619FF-8B86-D011-B42D-00CF4FC964FF&id=61451351&lineId=U045147f1ad961bfe996b72bbf417f3c9&lineSenderId=1644264921&facebookId=370329180020364&facebookSenderId=2094832040560427&telegramUserId=1303201999&telegramBotId=1495032701&viberBotUserId=Upk26V/i1GXfvxZ8S41P/w==&viberBotId=5591458813882487336&instagramId=17841546155331428&instagramSenderId=17841405793187218&twitterId=370329180020364&twitterSenderId=2094832040560427&appleBusinessChatId=ef6ca8e9-3718-4dc9-a9a0-b4ac28d135ca&appleBusinessChatSenderId=urn:mbid:AQAAYyUbut3B2E3T9GLv4EaF/%3Ctruncated%3E&liveChatRegId=79f9701b-e350-4497-9689-b2257864e63f","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","2","persons"],"query":[{"key":"phone","value":"4670123456"},{"key":"email","value":"name@example.com"},{"key":"externalId","value":"6F9619FF-8B86-D011-B42D-00CF4FC964FF"},{"key":"pushRegistrationId","value":"6F9619FF-8B86-D011-B42D-00CF4FC964FF"},{"key":"id","value":"61451351"},{"key":"lineId","value":"U045147f1ad961bfe996b72bbf417f3c9"},{"key":"lineSenderId","value":"1644264921"},{"key":"facebookId","value":"370329180020364"},{"key":"facebookSenderId","value":"2094832040560427"},{"key":"telegramUserId","value":"1303201999"},{"key":"telegramBotId","value":"1495032701"},{"key":"viberBotUserId","value":"Upk26V/i1GXfvxZ8S41P/w=="},{"key":"viberBotId","value":"5591458813882487336"},{"key":"instagramId","value":"17841546155331428"},{"key":"instagramSenderId","value":"17841405793187218"},{"key":"twitterId","value":"370329180020364"},{"key":"twitterSenderId","value":"2094832040560427"},{"key":"appleBusinessChatId","value":"ef6ca8e9-3718-4dc9-a9a0-b4ac28d135ca"},{"key":"appleBusinessChatSenderId","value":"urn:mbid:AQAAYyUbut3B2E3T9GLv4EaF/%3Ctruncated%3E"},{"key":"liveChatRegId","value":"79f9701b-e350-4497-9689-b2257864e63f"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"82"},{"key":"Date","value":"Wed, 17 May 2023 11:40:06 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684323607340580827"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":null}],"_postman_id":"e83ff2f4-da5c-4de5-bf62-a39e53a6899f"},{"name":"Batch full people upsert","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 207\", function () {","    pm.expect(pm.response.code).to.be.oneOf([207]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"results\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","","pm.test(\"'errors' is an array when present\", function () {","    if (responseBody.errors !== undefined) { pm.expect(responseBody.errors).to.be.an('array'); }","});","","pm.test(\"'results' is an array\", function () {","    pm.expect(responseBody[\"results\"]).to.be.an('array');","});"],"type":"text/javascript","packages":{}}}],"id":"2e107f9c-b3f9-4ddf-96b2-233892fa56a4","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"persons\": [\n    {\n      \"externalId\": \"sample-3\",\n      \"firstName\": \"John\",\n      \"lastName\": \"Doe\",\n      \"contactInformation\": [\n        {\n          \"identifier\": \"john.doe@example.com\",\n          \"type\": \"EMAIL\"\n        }\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/3/persons/upsert","description":"<p>Batch full people upsert.</p>\n<p>Use this method to create or fully replace person profiles by matching on identifiers such as external ID, email, or phone. If a match is identified, the existing profile is entirely replaced with the provided data; any fields excluded from the request will be cleared. If no match is identified, a new profile is created. The operation returns a status for each profile: CREATED, UPDATED, or NOT_MODIFIED. <strong>Notes:</strong> 1. The batch size limit is 1000 persons. 2. Contact information (emails and phone numbers) in the request is checked only for formal validity. Ensure accuracy and absence of errors.</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>persons</em></td>\n<td>Array</td>\n<td><strong>Required.</strong></td>\n</tr>\n<tr>\n<td><em>persons[].id</em></td>\n<td>Int</td>\n<td>Unique id of the entity.</td>\n</tr>\n<tr>\n<td><em>persons[].externalId</em></td>\n<td>String</td>\n<td>Unique ID for a person from your or another external system, 256 characters max.</td>\n</tr>\n<tr>\n<td><em>persons[].type</em></td>\n<td>String</td>\n<td>Person's type, default type is CUSTOMER. One of: <code>CUSTOMER</code>, <code>LEAD</code>.</td>\n</tr>\n<tr>\n<td><em>persons[].firstName</em></td>\n<td>String</td>\n<td>Person's first name, 255 characters max.</td>\n</tr>\n<tr>\n<td><em>persons[].middleName</em></td>\n<td>String</td>\n<td>Person's middle name, 50 characters max.</td>\n</tr>\n<tr>\n<td><em>persons[].lastName</em></td>\n<td>String</td>\n<td>Person's last name, 255 characters max.</td>\n</tr>\n<tr>\n<td><em>persons[].nickName</em></td>\n<td>String</td>\n<td>Person's nick name, 50 characters max.</td>\n</tr>\n<tr>\n<td><em>persons[].country</em></td>\n<td>String</td>\n<td>Person's country, 50 characters max.</td>\n</tr>\n<tr>\n<td><em>persons[].city</em></td>\n<td>String</td>\n<td>Person's city, 50 characters max.</td>\n</tr>\n<tr>\n<td><em>persons[].address</em></td>\n<td>String</td>\n<td>Person's address, 256 characters max.</td>\n</tr>\n<tr>\n<td><em>persons[].gender</em></td>\n<td>String</td>\n<td>Person's gender. One of: <code>MALE</code>, <code>FEMALE</code>.</td>\n</tr>\n<tr>\n<td><em>persons[].preferredLanguage</em></td>\n<td>String</td>\n<td>Person's preferred language. Must be in two letter ISO (xx) or language-region BCP-47 (xx-YY) format.</td>\n</tr>\n<tr>\n<td><em>persons[].birthDate</em></td>\n<td>String</td>\n<td>Person's date of birth, format <code>YYYY-MM-DD</code>.</td>\n</tr>\n<tr>\n<td><em>persons[].profilePicture</em></td>\n<td>String</td>\n<td>URL for the person's profile picture, 2083 characters max.</td>\n</tr>\n<tr>\n<td><em>persons[].tags</em></td>\n<td>Array</td>\n<td>List of tags that this person has.</td>\n</tr>\n<tr>\n<td><em>persons[].contactInformation</em></td>\n<td>Array</td>\n<td>List of phones, emails and other information how a person can be contacted.</td>\n</tr>\n<tr>\n<td><em>persons[].contactInformation[].type</em></td>\n<td>String</td>\n<td>Type of the person ID. One of: <code>PHONE</code>, <code>EMAIL</code>.</td>\n</tr>\n<tr>\n<td><em>persons[].contactInformation[].identifier</em></td>\n<td>String</td>\n<td>Person ID. ID type must match the type parameter. Some channels (e,g., Apple Business Chat) use identifiers that contain unsafe characters. Make sure you URL-encode them in your API request. 255 characters max.</td>\n</tr>\n<tr>\n<td><em>persons[].contactInformation[].sender</em></td>\n<td>String</td>\n<td>Sender or application ID. Sender is required for all identifier types except PHONE and EMAIL. 255 characters max.</td>\n</tr>\n<tr>\n<td><em>persons[].contactInformation[].primary</em></td>\n<td>Boolean</td>\n<td>Indicates if this ID is preferred for communication.</td>\n</tr>\n<tr>\n<td><em>persons[].customAttributes</em></td>\n<td>Object</td>\n<td>List of custom attributes for the person, 4096 characters max per value.</td>\n</tr>\n<tr>\n<td><em>persons[].computedAttributes</em></td>\n<td>Object</td>\n<td>Person's computed attributes grouped by type.</td>\n</tr>\n<tr>\n<td><em>persons[].createdFrom</em></td>\n<td>String</td>\n<td>Source system that last modified this person record. One of: <code>API</code>, <code>PORTAL</code>, <code>WEB_SDK</code>, <code>INTEGRATION</code>, <code>PUSH</code>, <code>FACEBOOK</code>, <code>LINE</code>, <code>TELEGRAM</code>, <code>SALESFORCE</code>, <code>DYNAMICS</code>, <code>ZAPIER</code>, <code>FORMS</code>, <code>AMS</code>, <code>COMPUTED</code>, <code>ANSWERS</code>, <code>CONVERSATIONS</code>, <code>IMPORT</code>, <code>INSTAGRAM_DM</code>, <code>FLOW</code>, <code>LIVE_CHAT</code>, <code>VKONTAKTE</code>, <code>ZALO_FOLLOWER</code>, <code>TIKTOK_BM</code>, <code>WHATSAPP</code>, <code>KAKAO_TALK</code>, <code>UNKNOWN</code>.</td>\n</tr>\n<tr>\n<td><em>persons[].createdBy</em></td>\n<td>String</td>\n<td>Identifier of the user who created this person record.</td>\n</tr>\n<tr>\n<td><em>persons[].createdAt</em></td>\n<td>String</td>\n<td>Date and time of creation. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td><em>persons[].modifiedFrom</em></td>\n<td>String</td>\n<td>Source system that last modified this person record. One of: <code>API</code>, <code>PORTAL</code>, <code>WEB_SDK</code>, <code>INTEGRATION</code>, <code>PUSH</code>, <code>FACEBOOK</code>, <code>LINE</code>, <code>TELEGRAM</code>, <code>SALESFORCE</code>, <code>DYNAMICS</code>, <code>ZAPIER</code>, <code>FORMS</code>, <code>AMS</code>, <code>COMPUTED</code>, <code>ANSWERS</code>, <code>CONVERSATIONS</code>, <code>IMPORT</code>, <code>INSTAGRAM_DM</code>, <code>FLOW</code>, <code>LIVE_CHAT</code>, <code>VKONTAKTE</code>, <code>ZALO_FOLLOWER</code>, <code>TIKTOK_BM</code>, <code>WHATSAPP</code>, <code>KAKAO_TALK</code>, <code>UNKNOWN</code>.</td>\n</tr>\n<tr>\n<td><em>persons[].modifiedBy</em></td>\n<td>String</td>\n<td>Identifier of the user who last modified this person record.</td>\n</tr>\n<tr>\n<td><em>persons[].modifiedAt</em></td>\n<td>String</td>\n<td>Date and time of last modification. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>207 Multi-Status</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>errors</em></td>\n<td>Object</td>\n<td>Error information for failed batch operation items.</td>\n</tr>\n<tr>\n<td><em>errors.code</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Error code identifying the type of error that occurred. One of: <code>400100</code>, <code>400101</code>, <code>400102</code>, <code>400103</code>, <code>400104</code>, <code>400105</code>, <code>400106</code>, <code>400107</code>, <code>404100</code>, <code>404101</code>, <code>405100</code>, <code>409100</code>, <code>500100</code>.</td>\n</tr>\n<tr>\n<td><em>errors.message</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Human-readable error message describing what went wrong.</td>\n</tr>\n<tr>\n<td><em>errors.details</em></td>\n<td>Array</td>\n<td>Additional validation error details with specific property-level information.</td>\n</tr>\n<tr>\n<td><em>errors.details[].property</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Name of the property or field that caused the validation error.</td>\n</tr>\n<tr>\n<td><em>errors.details[].message</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Specific error message describing the validation failure.</td>\n</tr>\n<tr>\n<td><em>errors.details[].payload</em></td>\n<td>Object</td>\n<td>Additional context or metadata related to the validation error.</td>\n</tr>\n<tr>\n<td><em>errors.index</em></td>\n<td>Int</td>\n<td>Index position of the failed item in the original request batch.</td>\n</tr>\n<tr>\n<td><em>results</em></td>\n<td>Object</td>\n<td>Successful result for a person upsert operation.</td>\n</tr>\n<tr>\n<td><em>results.id</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Unique identifier of the upserted person profile.</td>\n</tr>\n<tr>\n<td><em>results.index</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Index position of this person in the original request batch.</td>\n</tr>\n<tr>\n<td><em>results.status</em></td>\n<td>String</td>\n<td>Status indicating the type of operation performed on a person profile during upsert One of: <code>CREATED</code>, <code>UPDATED</code>, <code>NOT_MODIFIED</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["people","3","persons","upsert"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"b9a0710a-cccb-4316-a97e-2d864ae75b76","name":"207 - Successful upsert - Single person created","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"persons\": [\n    {\n      \"externalId\": \"3\",\n      \"firstName\": \"Jane\",\n      \"lastName\": \"Smith\",\n      \"address\": \"67 Farringdon Road\",\n      \"city\": \"London\",\n      \"country\": \"United Kingdom\",\n      \"gender\": \"FEMALE\",\n      \"birthDate\": \"1966-01-15\",\n      \"middleName\": \"Janie\",\n      \"preferredLanguage\": \"en-gb\",\n      \"profilePicture\": \"http://profile.com\",\n      \"customAttributes\": {\n        \"Contract Expiry\": \"2018-06-01\",\n        \"Company\": \"Acme\",\n        \"ShoppingCartList\": [\n          {\n            \"productName\": \"Sneakers\",\n            \"productPrice\": 25.33,\n            \"productCategory\": \"Sport Sneakers\",\n            \"productImage\": \"/image1.png\"\n          },\n          {\n            \"productName\": \"T-Shirt\",\n            \"productPrice\": 9.99,\n            \"productCategory\": \"Casual\",\n            \"productImage\": \"/image2.png\"\n          }\n        ]\n      },\n      \"contactInformation\": [\n        {\n          \"identifier\": \"john.doe@example.com\",\n          \"type\": \"EMAIL\"\n        },\n        {\n          \"identifier\": \"41793026727\",\n          \"type\": \"PHONE\"\n        }\n      ],\n      \"tags\": [\n        \"VIP Customers\",\n        \"New Customers\"\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/3/persons/upsert"},"status":"Multi-Status","code":207,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errors\": [],\n  \"results\": [\n    {\n      \"id\": 12345,\n      \"index\": 0,\n      \"status\": \"CREATED\"\n    }\n  ]\n}"},{"id":"ae3feff9-eca0-4aa1-909d-2d8db3dc327b","name":"400 - real VHD response","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"persons\": [\n    {\n      \"externalId\": \"3\",\n      \"firstName\": \"Jane\",\n      \"lastName\": \"Smith\",\n      \"address\": \"67 Farringdon Road\",\n      \"city\": \"London\",\n      \"country\": \"United Kingdom\",\n      \"gender\": \"FEMALE\",\n      \"birthDate\": \"1966-01-15\",\n      \"middleName\": \"Janie\",\n      \"preferredLanguage\": \"en-gb\",\n      \"profilePicture\": \"http://profile.com\",\n      \"customAttributes\": {\n        \"Contract Expiry\": \"2018-06-01\",\n        \"Company\": \"Acme\",\n        \"ShoppingCartList\": [\n          {\n            \"productName\": \"Sneakers\",\n            \"productPrice\": 25.33,\n            \"productCategory\": \"Sport Sneakers\",\n            \"productImage\": \"/image1.png\"\n          },\n          {\n            \"productName\": \"T-Shirt\",\n            \"productPrice\": 9.99,\n            \"productCategory\": \"Casual\",\n            \"productImage\": \"/image2.png\"\n          }\n        ]\n      },\n      \"contactInformation\": [\n        {\n          \"identifier\": \"john.doe@example.com\",\n          \"type\": \"EMAIL\"\n        },\n        {\n          \"identifier\": \"41793026727\",\n          \"type\": \"PHONE\"\n        }\n      ],\n      \"tags\": [\n        \"VIP Customers\",\n        \"New Customers\"\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/3/persons/upsert"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": 400104,\n  \"message\": \"Missing required property 'persons'\",\n  \"details\": [\n    {\n      \"property\": \"persons\",\n      \"message\": \"Required, but value is missing\"\n    }\n  ]\n}"},{"id":"2d163e58-a123-411a-9a19-1af24ece26dc","name":"401 - Example","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"persons\": [\n    {\n      \"externalId\": \"3\",\n      \"firstName\": \"Jane\",\n      \"lastName\": \"Smith\",\n      \"address\": \"67 Farringdon Road\",\n      \"city\": \"London\",\n      \"country\": \"United Kingdom\",\n      \"gender\": \"FEMALE\",\n      \"birthDate\": \"1966-01-15\",\n      \"middleName\": \"Janie\",\n      \"preferredLanguage\": \"en-gb\",\n      \"profilePicture\": \"http://profile.com\",\n      \"customAttributes\": {\n        \"Contract Expiry\": \"2018-06-01\",\n        \"Company\": \"Acme\",\n        \"ShoppingCartList\": [\n          {\n            \"productName\": \"Sneakers\",\n            \"productPrice\": 25.33,\n            \"productCategory\": \"Sport Sneakers\",\n            \"productImage\": \"/image1.png\"\n          },\n          {\n            \"productName\": \"T-Shirt\",\n            \"productPrice\": 9.99,\n            \"productCategory\": \"Casual\",\n            \"productImage\": \"/image2.png\"\n          }\n        ]\n      },\n      \"contactInformation\": [\n        {\n          \"identifier\": \"john.doe@example.com\",\n          \"type\": \"EMAIL\"\n        },\n        {\n          \"identifier\": \"41793026727\",\n          \"type\": \"PHONE\"\n        }\n      ],\n      \"tags\": [\n        \"VIP Customers\",\n        \"New Customers\"\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/3/persons/upsert"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"c8f5b1d6-5463-43c2-bd2a-0076e09f2504","name":"403 - Example","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"persons\": [\n    {\n      \"externalId\": \"3\",\n      \"firstName\": \"Jane\",\n      \"lastName\": \"Smith\",\n      \"address\": \"67 Farringdon Road\",\n      \"city\": \"London\",\n      \"country\": \"United Kingdom\",\n      \"gender\": \"FEMALE\",\n      \"birthDate\": \"1966-01-15\",\n      \"middleName\": \"Janie\",\n      \"preferredLanguage\": \"en-gb\",\n      \"profilePicture\": \"http://profile.com\",\n      \"customAttributes\": {\n        \"Contract Expiry\": \"2018-06-01\",\n        \"Company\": \"Acme\",\n        \"ShoppingCartList\": [\n          {\n            \"productName\": \"Sneakers\",\n            \"productPrice\": 25.33,\n            \"productCategory\": \"Sport Sneakers\",\n            \"productImage\": \"/image1.png\"\n          },\n          {\n            \"productName\": \"T-Shirt\",\n            \"productPrice\": 9.99,\n            \"productCategory\": \"Casual\",\n            \"productImage\": \"/image2.png\"\n          }\n        ]\n      },\n      \"contactInformation\": [\n        {\n          \"identifier\": \"john.doe@example.com\",\n          \"type\": \"EMAIL\"\n        },\n        {\n          \"identifier\": \"41793026727\",\n          \"type\": \"PHONE\"\n        }\n      ],\n      \"tags\": [\n        \"VIP Customers\",\n        \"New Customers\"\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/3/persons/upsert"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"9ecd2f34-e728-45ba-b127-9b65e39fc748","name":"429 - Example","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"persons\": [\n    {\n      \"externalId\": \"3\",\n      \"firstName\": \"Jane\",\n      \"lastName\": \"Smith\",\n      \"address\": \"67 Farringdon Road\",\n      \"city\": \"London\",\n      \"country\": \"United Kingdom\",\n      \"gender\": \"FEMALE\",\n      \"birthDate\": \"1966-01-15\",\n      \"middleName\": \"Janie\",\n      \"preferredLanguage\": \"en-gb\",\n      \"profilePicture\": \"http://profile.com\",\n      \"customAttributes\": {\n        \"Contract Expiry\": \"2018-06-01\",\n        \"Company\": \"Acme\",\n        \"ShoppingCartList\": [\n          {\n            \"productName\": \"Sneakers\",\n            \"productPrice\": 25.33,\n            \"productCategory\": \"Sport Sneakers\",\n            \"productImage\": \"/image1.png\"\n          },\n          {\n            \"productName\": \"T-Shirt\",\n            \"productPrice\": 9.99,\n            \"productCategory\": \"Casual\",\n            \"productImage\": \"/image2.png\"\n          }\n        ]\n      },\n      \"contactInformation\": [\n        {\n          \"identifier\": \"john.doe@example.com\",\n          \"type\": \"EMAIL\"\n        },\n        {\n          \"identifier\": \"41793026727\",\n          \"type\": \"PHONE\"\n        }\n      ],\n      \"tags\": [\n        \"VIP Customers\",\n        \"New Customers\"\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/3/persons/upsert"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"7ad01fe7-964a-47a9-8cda-519008fd72fb","name":"500 - Example","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"persons\": [\n    {\n      \"externalId\": \"3\",\n      \"firstName\": \"Jane\",\n      \"lastName\": \"Smith\",\n      \"address\": \"67 Farringdon Road\",\n      \"city\": \"London\",\n      \"country\": \"United Kingdom\",\n      \"gender\": \"FEMALE\",\n      \"birthDate\": \"1966-01-15\",\n      \"middleName\": \"Janie\",\n      \"preferredLanguage\": \"en-gb\",\n      \"profilePicture\": \"http://profile.com\",\n      \"customAttributes\": {\n        \"Contract Expiry\": \"2018-06-01\",\n        \"Company\": \"Acme\",\n        \"ShoppingCartList\": [\n          {\n            \"productName\": \"Sneakers\",\n            \"productPrice\": 25.33,\n            \"productCategory\": \"Sport Sneakers\",\n            \"productImage\": \"/image1.png\"\n          },\n          {\n            \"productName\": \"T-Shirt\",\n            \"productPrice\": 9.99,\n            \"productCategory\": \"Casual\",\n            \"productImage\": \"/image2.png\"\n          }\n        ]\n      },\n      \"contactInformation\": [\n        {\n          \"identifier\": \"john.doe@example.com\",\n          \"type\": \"EMAIL\"\n        },\n        {\n          \"identifier\": \"41793026727\",\n          \"type\": \"PHONE\"\n        }\n      ],\n      \"tags\": [\n        \"VIP Customers\",\n        \"New Customers\"\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/3/persons/upsert"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"2e107f9c-b3f9-4ddf-96b2-233892fa56a4"},{"name":"Batch partial people upsert","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 207\", function () {","    pm.expect(pm.response.code).to.be.oneOf([207]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"results\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","","pm.test(\"'errors' is an array when present\", function () {","    if (responseBody.errors !== undefined) { pm.expect(responseBody.errors).to.be.an('array'); }","});","","pm.test(\"'results' is an array\", function () {","    pm.expect(responseBody[\"results\"]).to.be.an('array');","});"],"type":"text/javascript","packages":{}}}],"id":"495c5e92-88cc-4af0-b761-90b02207f982","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"PATCH","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"persons\": [\n    {\n      \"externalId\": \"sample-3\",\n      \"lastName\": \"Doe Updated\",\n      \"contactInformation\": [\n        {\n          \"identifier\": \"john.doe@example.com\",\n          \"type\": \"EMAIL\"\n        }\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/3/persons/upsert","description":"<p>Batch partial people upsert.</p>\n<p>Use this method to create or partially update person profiles by matching on identifiers such as external ID, email, or phone. If a match is identified, the existing profile is updated only with the provided data; any fields excluded from the request remain unchanged. If no match is identified, a new profile is created. The operation returns a status for each profile: CREATED, UPDATED, or NOT_MODIFIED. <strong>Notes:</strong> 1. The batch size limit is 1000 persons. 2. Contact information (emails and phone numbers) in the request is checked only for formal validity. Ensure accuracy and absence of errors.</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>persons</em></td>\n<td>Array</td>\n<td><strong>Required.</strong></td>\n</tr>\n<tr>\n<td><em>persons[].id</em></td>\n<td>Int</td>\n<td>Unique id of the entity.</td>\n</tr>\n<tr>\n<td><em>persons[].externalId</em></td>\n<td>String</td>\n<td>Unique ID for a person from your or another external system, 256 characters max.</td>\n</tr>\n<tr>\n<td><em>persons[].type</em></td>\n<td>String</td>\n<td>Person's type, default type is CUSTOMER. One of: <code>CUSTOMER</code>, <code>LEAD</code>.</td>\n</tr>\n<tr>\n<td><em>persons[].firstName</em></td>\n<td>String</td>\n<td>Person's first name, 255 characters max.</td>\n</tr>\n<tr>\n<td><em>persons[].middleName</em></td>\n<td>String</td>\n<td>Person's middle name, 50 characters max.</td>\n</tr>\n<tr>\n<td><em>persons[].lastName</em></td>\n<td>String</td>\n<td>Person's last name, 255 characters max.</td>\n</tr>\n<tr>\n<td><em>persons[].nickName</em></td>\n<td>String</td>\n<td>Person's nick name, 50 characters max.</td>\n</tr>\n<tr>\n<td><em>persons[].country</em></td>\n<td>String</td>\n<td>Person's country, 50 characters max.</td>\n</tr>\n<tr>\n<td><em>persons[].city</em></td>\n<td>String</td>\n<td>Person's city, 50 characters max.</td>\n</tr>\n<tr>\n<td><em>persons[].address</em></td>\n<td>String</td>\n<td>Person's address, 256 characters max.</td>\n</tr>\n<tr>\n<td><em>persons[].gender</em></td>\n<td>String</td>\n<td>Person's gender. One of: <code>MALE</code>, <code>FEMALE</code>.</td>\n</tr>\n<tr>\n<td><em>persons[].preferredLanguage</em></td>\n<td>String</td>\n<td>Person's preferred language. Must be in two letter ISO (xx) or language-region BCP-47 (xx-YY) format.</td>\n</tr>\n<tr>\n<td><em>persons[].birthDate</em></td>\n<td>String</td>\n<td>Person's date of birth, format <code>YYYY-MM-DD</code>.</td>\n</tr>\n<tr>\n<td><em>persons[].profilePicture</em></td>\n<td>String</td>\n<td>URL for the person's profile picture, 2083 characters max.</td>\n</tr>\n<tr>\n<td><em>persons[].tags</em></td>\n<td>Array</td>\n<td>List of tags that this person has.</td>\n</tr>\n<tr>\n<td><em>persons[].contactInformation</em></td>\n<td>Array</td>\n<td>List of phones, emails and other information how a person can be contacted.</td>\n</tr>\n<tr>\n<td><em>persons[].contactInformation[].type</em></td>\n<td>String</td>\n<td>Type of the person ID. One of: <code>PHONE</code>, <code>EMAIL</code>.</td>\n</tr>\n<tr>\n<td><em>persons[].contactInformation[].identifier</em></td>\n<td>String</td>\n<td>Person ID. ID type must match the type parameter. Some channels (e,g., Apple Business Chat) use identifiers that contain unsafe characters. Make sure you URL-encode them in your API request. 255 characters max.</td>\n</tr>\n<tr>\n<td><em>persons[].contactInformation[].sender</em></td>\n<td>String</td>\n<td>Sender or application ID. Sender is required for all identifier types except PHONE and EMAIL. 255 characters max.</td>\n</tr>\n<tr>\n<td><em>persons[].contactInformation[].primary</em></td>\n<td>Boolean</td>\n<td>Indicates if this ID is preferred for communication.</td>\n</tr>\n<tr>\n<td><em>persons[].customAttributes</em></td>\n<td>Object</td>\n<td>List of custom attributes for the person, 4096 characters max per value.</td>\n</tr>\n<tr>\n<td><em>persons[].computedAttributes</em></td>\n<td>Object</td>\n<td>Person's computed attributes grouped by type.</td>\n</tr>\n<tr>\n<td><em>persons[].createdFrom</em></td>\n<td>String</td>\n<td>Source system that last modified this person record. One of: <code>API</code>, <code>PORTAL</code>, <code>WEB_SDK</code>, <code>INTEGRATION</code>, <code>PUSH</code>, <code>FACEBOOK</code>, <code>LINE</code>, <code>TELEGRAM</code>, <code>SALESFORCE</code>, <code>DYNAMICS</code>, <code>ZAPIER</code>, <code>FORMS</code>, <code>AMS</code>, <code>COMPUTED</code>, <code>ANSWERS</code>, <code>CONVERSATIONS</code>, <code>IMPORT</code>, <code>INSTAGRAM_DM</code>, <code>FLOW</code>, <code>LIVE_CHAT</code>, <code>VKONTAKTE</code>, <code>ZALO_FOLLOWER</code>, <code>TIKTOK_BM</code>, <code>WHATSAPP</code>, <code>KAKAO_TALK</code>, <code>UNKNOWN</code>.</td>\n</tr>\n<tr>\n<td><em>persons[].createdBy</em></td>\n<td>String</td>\n<td>Identifier of the user who created this person record.</td>\n</tr>\n<tr>\n<td><em>persons[].createdAt</em></td>\n<td>String</td>\n<td>Date and time of creation. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td><em>persons[].modifiedFrom</em></td>\n<td>String</td>\n<td>Source system that last modified this person record. One of: <code>API</code>, <code>PORTAL</code>, <code>WEB_SDK</code>, <code>INTEGRATION</code>, <code>PUSH</code>, <code>FACEBOOK</code>, <code>LINE</code>, <code>TELEGRAM</code>, <code>SALESFORCE</code>, <code>DYNAMICS</code>, <code>ZAPIER</code>, <code>FORMS</code>, <code>AMS</code>, <code>COMPUTED</code>, <code>ANSWERS</code>, <code>CONVERSATIONS</code>, <code>IMPORT</code>, <code>INSTAGRAM_DM</code>, <code>FLOW</code>, <code>LIVE_CHAT</code>, <code>VKONTAKTE</code>, <code>ZALO_FOLLOWER</code>, <code>TIKTOK_BM</code>, <code>WHATSAPP</code>, <code>KAKAO_TALK</code>, <code>UNKNOWN</code>.</td>\n</tr>\n<tr>\n<td><em>persons[].modifiedBy</em></td>\n<td>String</td>\n<td>Identifier of the user who last modified this person record.</td>\n</tr>\n<tr>\n<td><em>persons[].modifiedAt</em></td>\n<td>String</td>\n<td>Date and time of last modification. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>207 Multi-Status</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>errors</em></td>\n<td>Object</td>\n<td>Error information for failed batch operation items.</td>\n</tr>\n<tr>\n<td><em>errors.code</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Error code identifying the type of error that occurred. One of: <code>400100</code>, <code>400101</code>, <code>400102</code>, <code>400103</code>, <code>400104</code>, <code>400105</code>, <code>400106</code>, <code>400107</code>, <code>404100</code>, <code>404101</code>, <code>405100</code>, <code>409100</code>, <code>500100</code>.</td>\n</tr>\n<tr>\n<td><em>errors.message</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Human-readable error message describing what went wrong.</td>\n</tr>\n<tr>\n<td><em>errors.details</em></td>\n<td>Array</td>\n<td>Additional validation error details with specific property-level information.</td>\n</tr>\n<tr>\n<td><em>errors.details[].property</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Name of the property or field that caused the validation error.</td>\n</tr>\n<tr>\n<td><em>errors.details[].message</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Specific error message describing the validation failure.</td>\n</tr>\n<tr>\n<td><em>errors.details[].payload</em></td>\n<td>Object</td>\n<td>Additional context or metadata related to the validation error.</td>\n</tr>\n<tr>\n<td><em>errors.index</em></td>\n<td>Int</td>\n<td>Index position of the failed item in the original request batch.</td>\n</tr>\n<tr>\n<td><em>results</em></td>\n<td>Object</td>\n<td>Successful result for a person upsert operation.</td>\n</tr>\n<tr>\n<td><em>results.id</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Unique identifier of the upserted person profile.</td>\n</tr>\n<tr>\n<td><em>results.index</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Index position of this person in the original request batch.</td>\n</tr>\n<tr>\n<td><em>results.status</em></td>\n<td>String</td>\n<td>Status indicating the type of operation performed on a person profile during upsert One of: <code>CREATED</code>, <code>UPDATED</code>, <code>NOT_MODIFIED</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["people","3","persons","upsert"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"552978fd-cb0a-43a5-b012-900dfc3d49fd","name":"207 - Successful upsert - Single person created","originalRequest":{"method":"PATCH","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"persons\": [\n    {\n      \"externalId\": \"3\",\n      \"firstName\": \"Jane\",\n      \"lastName\": \"Smith\",\n      \"address\": \"67 Farringdon Road\",\n      \"city\": \"London\",\n      \"country\": \"United Kingdom\",\n      \"gender\": \"FEMALE\",\n      \"birthDate\": \"1966-01-15\",\n      \"middleName\": \"Janie\",\n      \"preferredLanguage\": \"en-gb\",\n      \"profilePicture\": \"http://profile.com\",\n      \"customAttributes\": {\n        \"Contract Expiry\": \"2018-06-01\",\n        \"Company\": \"Acme\",\n        \"ShoppingCartList\": [\n          {\n            \"productName\": \"Sneakers\",\n            \"productPrice\": 25.33,\n            \"productCategory\": \"Sport Sneakers\",\n            \"productImage\": \"/image1.png\"\n          },\n          {\n            \"productName\": \"T-Shirt\",\n            \"productPrice\": 9.99,\n            \"productCategory\": \"Casual\",\n            \"productImage\": \"/image2.png\"\n          }\n        ]\n      },\n      \"contactInformation\": [\n        {\n          \"identifier\": \"john.doe@example.com\",\n          \"type\": \"EMAIL\"\n        },\n        {\n          \"identifier\": \"41793026727\",\n          \"type\": \"PHONE\"\n        }\n      ],\n      \"tags\": [\n        \"VIP Customers\",\n        \"New Customers\"\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/3/persons/upsert"},"status":"Multi-Status","code":207,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errors\": [],\n  \"results\": [\n    {\n      \"id\": 12345,\n      \"index\": 0,\n      \"status\": \"CREATED\"\n    }\n  ]\n}"},{"id":"b0856631-f37e-4d7a-a9ad-24a58983d9c6","name":"400 - real VHD response","originalRequest":{"method":"PATCH","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"persons\": [\n    {\n      \"externalId\": \"3\",\n      \"firstName\": \"Jane\",\n      \"lastName\": \"Smith\",\n      \"address\": \"67 Farringdon Road\",\n      \"city\": \"London\",\n      \"country\": \"United Kingdom\",\n      \"gender\": \"FEMALE\",\n      \"birthDate\": \"1966-01-15\",\n      \"middleName\": \"Janie\",\n      \"preferredLanguage\": \"en-gb\",\n      \"profilePicture\": \"http://profile.com\",\n      \"customAttributes\": {\n        \"Contract Expiry\": \"2018-06-01\",\n        \"Company\": \"Acme\",\n        \"ShoppingCartList\": [\n          {\n            \"productName\": \"Sneakers\",\n            \"productPrice\": 25.33,\n            \"productCategory\": \"Sport Sneakers\",\n            \"productImage\": \"/image1.png\"\n          },\n          {\n            \"productName\": \"T-Shirt\",\n            \"productPrice\": 9.99,\n            \"productCategory\": \"Casual\",\n            \"productImage\": \"/image2.png\"\n          }\n        ]\n      },\n      \"contactInformation\": [\n        {\n          \"identifier\": \"john.doe@example.com\",\n          \"type\": \"EMAIL\"\n        },\n        {\n          \"identifier\": \"41793026727\",\n          \"type\": \"PHONE\"\n        }\n      ],\n      \"tags\": [\n        \"VIP Customers\",\n        \"New Customers\"\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/3/persons/upsert"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": 400104,\n  \"message\": \"Missing required property 'persons'\",\n  \"details\": [\n    {\n      \"property\": \"persons\",\n      \"message\": \"Required, but value is missing\"\n    }\n  ]\n}"},{"id":"afdfe42c-9636-43c3-92ad-41a5cf351cde","name":"401 - Example","originalRequest":{"method":"PATCH","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"persons\": [\n    {\n      \"externalId\": \"3\",\n      \"firstName\": \"Jane\",\n      \"lastName\": \"Smith\",\n      \"address\": \"67 Farringdon Road\",\n      \"city\": \"London\",\n      \"country\": \"United Kingdom\",\n      \"gender\": \"FEMALE\",\n      \"birthDate\": \"1966-01-15\",\n      \"middleName\": \"Janie\",\n      \"preferredLanguage\": \"en-gb\",\n      \"profilePicture\": \"http://profile.com\",\n      \"customAttributes\": {\n        \"Contract Expiry\": \"2018-06-01\",\n        \"Company\": \"Acme\",\n        \"ShoppingCartList\": [\n          {\n            \"productName\": \"Sneakers\",\n            \"productPrice\": 25.33,\n            \"productCategory\": \"Sport Sneakers\",\n            \"productImage\": \"/image1.png\"\n          },\n          {\n            \"productName\": \"T-Shirt\",\n            \"productPrice\": 9.99,\n            \"productCategory\": \"Casual\",\n            \"productImage\": \"/image2.png\"\n          }\n        ]\n      },\n      \"contactInformation\": [\n        {\n          \"identifier\": \"john.doe@example.com\",\n          \"type\": \"EMAIL\"\n        },\n        {\n          \"identifier\": \"41793026727\",\n          \"type\": \"PHONE\"\n        }\n      ],\n      \"tags\": [\n        \"VIP Customers\",\n        \"New Customers\"\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/3/persons/upsert"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"b7db1c78-b453-4e84-b5e4-98fee9e8bec1","name":"403 - Example","originalRequest":{"method":"PATCH","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"persons\": [\n    {\n      \"externalId\": \"3\",\n      \"firstName\": \"Jane\",\n      \"lastName\": \"Smith\",\n      \"address\": \"67 Farringdon Road\",\n      \"city\": \"London\",\n      \"country\": \"United Kingdom\",\n      \"gender\": \"FEMALE\",\n      \"birthDate\": \"1966-01-15\",\n      \"middleName\": \"Janie\",\n      \"preferredLanguage\": \"en-gb\",\n      \"profilePicture\": \"http://profile.com\",\n      \"customAttributes\": {\n        \"Contract Expiry\": \"2018-06-01\",\n        \"Company\": \"Acme\",\n        \"ShoppingCartList\": [\n          {\n            \"productName\": \"Sneakers\",\n            \"productPrice\": 25.33,\n            \"productCategory\": \"Sport Sneakers\",\n            \"productImage\": \"/image1.png\"\n          },\n          {\n            \"productName\": \"T-Shirt\",\n            \"productPrice\": 9.99,\n            \"productCategory\": \"Casual\",\n            \"productImage\": \"/image2.png\"\n          }\n        ]\n      },\n      \"contactInformation\": [\n        {\n          \"identifier\": \"john.doe@example.com\",\n          \"type\": \"EMAIL\"\n        },\n        {\n          \"identifier\": \"41793026727\",\n          \"type\": \"PHONE\"\n        }\n      ],\n      \"tags\": [\n        \"VIP Customers\",\n        \"New Customers\"\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/3/persons/upsert"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"cc638581-b02b-42cf-b285-ff8b9eb8034c","name":"429 - Example","originalRequest":{"method":"PATCH","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"persons\": [\n    {\n      \"externalId\": \"3\",\n      \"firstName\": \"Jane\",\n      \"lastName\": \"Smith\",\n      \"address\": \"67 Farringdon Road\",\n      \"city\": \"London\",\n      \"country\": \"United Kingdom\",\n      \"gender\": \"FEMALE\",\n      \"birthDate\": \"1966-01-15\",\n      \"middleName\": \"Janie\",\n      \"preferredLanguage\": \"en-gb\",\n      \"profilePicture\": \"http://profile.com\",\n      \"customAttributes\": {\n        \"Contract Expiry\": \"2018-06-01\",\n        \"Company\": \"Acme\",\n        \"ShoppingCartList\": [\n          {\n            \"productName\": \"Sneakers\",\n            \"productPrice\": 25.33,\n            \"productCategory\": \"Sport Sneakers\",\n            \"productImage\": \"/image1.png\"\n          },\n          {\n            \"productName\": \"T-Shirt\",\n            \"productPrice\": 9.99,\n            \"productCategory\": \"Casual\",\n            \"productImage\": \"/image2.png\"\n          }\n        ]\n      },\n      \"contactInformation\": [\n        {\n          \"identifier\": \"john.doe@example.com\",\n          \"type\": \"EMAIL\"\n        },\n        {\n          \"identifier\": \"41793026727\",\n          \"type\": \"PHONE\"\n        }\n      ],\n      \"tags\": [\n        \"VIP Customers\",\n        \"New Customers\"\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/3/persons/upsert"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"a2554b64-2b21-4b4d-ae53-645b61fca6d5","name":"500 - Example","originalRequest":{"method":"PATCH","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"persons\": [\n    {\n      \"externalId\": \"3\",\n      \"firstName\": \"Jane\",\n      \"lastName\": \"Smith\",\n      \"address\": \"67 Farringdon Road\",\n      \"city\": \"London\",\n      \"country\": \"United Kingdom\",\n      \"gender\": \"FEMALE\",\n      \"birthDate\": \"1966-01-15\",\n      \"middleName\": \"Janie\",\n      \"preferredLanguage\": \"en-gb\",\n      \"profilePicture\": \"http://profile.com\",\n      \"customAttributes\": {\n        \"Contract Expiry\": \"2018-06-01\",\n        \"Company\": \"Acme\",\n        \"ShoppingCartList\": [\n          {\n            \"productName\": \"Sneakers\",\n            \"productPrice\": 25.33,\n            \"productCategory\": \"Sport Sneakers\",\n            \"productImage\": \"/image1.png\"\n          },\n          {\n            \"productName\": \"T-Shirt\",\n            \"productPrice\": 9.99,\n            \"productCategory\": \"Casual\",\n            \"productImage\": \"/image2.png\"\n          }\n        ]\n      },\n      \"contactInformation\": [\n        {\n          \"identifier\": \"john.doe@example.com\",\n          \"type\": \"EMAIL\"\n        },\n        {\n          \"identifier\": \"41793026727\",\n          \"type\": \"PHONE\"\n        }\n      ],\n      \"tags\": [\n        \"VIP Customers\",\n        \"New Customers\"\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/3/persons/upsert"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"495c5e92-88cc-4af0-b761-90b02207f982"},{"name":"Batch merge profiles","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 207\", function () {","    pm.expect(pm.response.code).to.be.oneOf([207]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"results\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","","pm.test(\"'errors' is an array when present\", function () {","    if (responseBody.errors !== undefined) { pm.expect(responseBody.errors).to.be.an('array'); }","});","","pm.test(\"'results' is an array\", function () {","    pm.expect(responseBody[\"results\"]).to.be.an('array');","});"],"type":"text/javascript","packages":{}}}],"id":"465c7f89-5040-4f49-916f-9b9b8335e36c","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"persons\": [\n    {\n      \"externalId\": \"sample-3\",\n      \"contactInformation\": [\n        {\n          \"identifier\": \"john.doe.work@example.com\",\n          \"type\": \"EMAIL\"\n        }\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/3/persons/merge","description":"<p>Batch merge profiles.</p>\n<p>Use this method to merge multiple person profiles belonging to the same user based on matching identifiers such as external ID, email, phone, and other contact information. The standard merge logic applies: the system selects a primary profile and consolidates fields and events from the secondary profiles into it. More information about the merge logic is available in the People documentation. Any data included in the merge request overrides what is already stored. If the request provides a new external ID or new contact information, it is written into the resulting profile, either replacing the existing identifier or being added to the contact list, depending on the type. If the merge request includes only new identifiers or contact information that match no existing profile, the system creates a new profile and populates it entirely with the data from the request. <strong>Notes:</strong> 1. The batch size limit is 1000 persons. 2. Contact information in the request is checked only for formal validity (emails and phone numbers). Ensure its correctness, alignment with configured senders, and absence of errors.</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>persons</em></td>\n<td>Array</td>\n<td><strong>Required.</strong></td>\n</tr>\n<tr>\n<td><em>persons[].id</em></td>\n<td>Int</td>\n<td>Unique id of the entity.</td>\n</tr>\n<tr>\n<td><em>persons[].externalId</em></td>\n<td>String</td>\n<td>Unique ID for a person from your or another external system, 256 characters max.</td>\n</tr>\n<tr>\n<td><em>persons[].type</em></td>\n<td>String</td>\n<td>Person's type, default type is CUSTOMER. One of: <code>CUSTOMER</code>, <code>LEAD</code>.</td>\n</tr>\n<tr>\n<td><em>persons[].firstName</em></td>\n<td>String</td>\n<td>Person's first name, 255 characters max.</td>\n</tr>\n<tr>\n<td><em>persons[].middleName</em></td>\n<td>String</td>\n<td>Person's middle name, 50 characters max.</td>\n</tr>\n<tr>\n<td><em>persons[].lastName</em></td>\n<td>String</td>\n<td>Person's last name, 255 characters max.</td>\n</tr>\n<tr>\n<td><em>persons[].nickName</em></td>\n<td>String</td>\n<td>Person's nick name, 50 characters max.</td>\n</tr>\n<tr>\n<td><em>persons[].country</em></td>\n<td>String</td>\n<td>Person's country, 50 characters max.</td>\n</tr>\n<tr>\n<td><em>persons[].city</em></td>\n<td>String</td>\n<td>Person's city, 50 characters max.</td>\n</tr>\n<tr>\n<td><em>persons[].address</em></td>\n<td>String</td>\n<td>Person's address, 256 characters max.</td>\n</tr>\n<tr>\n<td><em>persons[].gender</em></td>\n<td>String</td>\n<td>Person's gender. One of: <code>MALE</code>, <code>FEMALE</code>.</td>\n</tr>\n<tr>\n<td><em>persons[].preferredLanguage</em></td>\n<td>String</td>\n<td>Person's preferred language. Must be in two letter ISO (xx) or language-region BCP-47 (xx-YY) format.</td>\n</tr>\n<tr>\n<td><em>persons[].birthDate</em></td>\n<td>String</td>\n<td>Person's date of birth, format <code>YYYY-MM-DD</code>.</td>\n</tr>\n<tr>\n<td><em>persons[].profilePicture</em></td>\n<td>String</td>\n<td>URL for the person's profile picture, 2083 characters max.</td>\n</tr>\n<tr>\n<td><em>persons[].tags</em></td>\n<td>Array</td>\n<td>List of tags that this person has.</td>\n</tr>\n<tr>\n<td><em>persons[].contactInformation</em></td>\n<td>Array</td>\n<td>List of phones, emails and other information how a person can be contacted.</td>\n</tr>\n<tr>\n<td><em>persons[].contactInformation[].type</em></td>\n<td>String</td>\n<td>Type of the person ID. One of: <code>PHONE</code>, <code>EMAIL</code>, <code>FACEBOOK</code>, <code>LINE</code>, <code>TELEGRAM</code>, <code>PUSH</code>, <code>WEB_PUSH</code>, <code>LIVE_CHAT</code>, <code>VIBER_BOTS</code>, <code>INSTAGRAM</code>, <code>TWITTER</code>, <code>INSTAGRAM_DM</code>, <code>KAKAO_SANGDAM</code>, <code>APPLE_BUSINESS_CHAT</code>, <code>OPEN_CHANNEL</code>, <code>ZALO_FOLLOWER</code>, <code>TIKTOK_BM</code>, <code>WHATSAPP</code>, <code>KAKAO_TALK</code>.</td>\n</tr>\n<tr>\n<td><em>persons[].contactInformation[].identifier</em></td>\n<td>String</td>\n<td>Person ID. ID type must match the type parameter. Some channels (e,g., Apple Business Chat) use identifiers that contain unsafe characters. Make sure you URL-encode them in your API request. 255 characters max.</td>\n</tr>\n<tr>\n<td><em>persons[].contactInformation[].sender</em></td>\n<td>String</td>\n<td>Sender or application ID. Sender is required for all identifier types except PHONE and EMAIL. 255 characters max.</td>\n</tr>\n<tr>\n<td><em>persons[].contactInformation[].primary</em></td>\n<td>Boolean</td>\n<td>Indicates if this ID is preferred for communication. This flag only applies to PHONE and EMAIL.</td>\n</tr>\n<tr>\n<td><em>persons[].customAttributes</em></td>\n<td>Object</td>\n<td>List of custom attributes for the person, 4096 characters max per value.</td>\n</tr>\n<tr>\n<td><em>persons[].computedAttributes</em></td>\n<td>Object</td>\n<td>Person's computed attributes grouped by type.</td>\n</tr>\n<tr>\n<td><em>persons[].createdFrom</em></td>\n<td>String</td>\n<td>Source system that last modified this person record. One of: <code>API</code>, <code>PORTAL</code>, <code>WEB_SDK</code>, <code>INTEGRATION</code>, <code>PUSH</code>, <code>FACEBOOK</code>, <code>LINE</code>, <code>TELEGRAM</code>, <code>SALESFORCE</code>, <code>DYNAMICS</code>, <code>ZAPIER</code>, <code>FORMS</code>, <code>AMS</code>, <code>COMPUTED</code>, <code>ANSWERS</code>, <code>CONVERSATIONS</code>, <code>IMPORT</code>, <code>INSTAGRAM_DM</code>, <code>FLOW</code>, <code>LIVE_CHAT</code>, <code>VKONTAKTE</code>, <code>ZALO_FOLLOWER</code>, <code>TIKTOK_BM</code>, <code>WHATSAPP</code>, <code>KAKAO_TALK</code>, <code>UNKNOWN</code>.</td>\n</tr>\n<tr>\n<td><em>persons[].createdBy</em></td>\n<td>String</td>\n<td>Identifier of the user who created this person record.</td>\n</tr>\n<tr>\n<td><em>persons[].createdAt</em></td>\n<td>String</td>\n<td>Date and time of creation. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td><em>persons[].modifiedFrom</em></td>\n<td>String</td>\n<td>Source system that last modified this person record. One of: <code>API</code>, <code>PORTAL</code>, <code>WEB_SDK</code>, <code>INTEGRATION</code>, <code>PUSH</code>, <code>FACEBOOK</code>, <code>LINE</code>, <code>TELEGRAM</code>, <code>SALESFORCE</code>, <code>DYNAMICS</code>, <code>ZAPIER</code>, <code>FORMS</code>, <code>AMS</code>, <code>COMPUTED</code>, <code>ANSWERS</code>, <code>CONVERSATIONS</code>, <code>IMPORT</code>, <code>INSTAGRAM_DM</code>, <code>FLOW</code>, <code>LIVE_CHAT</code>, <code>VKONTAKTE</code>, <code>ZALO_FOLLOWER</code>, <code>TIKTOK_BM</code>, <code>WHATSAPP</code>, <code>KAKAO_TALK</code>, <code>UNKNOWN</code>.</td>\n</tr>\n<tr>\n<td><em>persons[].modifiedBy</em></td>\n<td>String</td>\n<td>Identifier of the user who last modified this person record.</td>\n</tr>\n<tr>\n<td><em>persons[].modifiedAt</em></td>\n<td>String</td>\n<td>Date and time of last modification. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>207 Multi-Status</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>errors</em></td>\n<td>Object</td>\n<td>Error information for failed batch operation items.</td>\n</tr>\n<tr>\n<td><em>errors.code</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Error code identifying the type of error that occurred. One of: <code>400100</code>, <code>400101</code>, <code>400102</code>, <code>400103</code>, <code>400104</code>, <code>400105</code>, <code>400106</code>, <code>400107</code>, <code>404100</code>, <code>404101</code>, <code>405100</code>, <code>409100</code>, <code>500100</code>.</td>\n</tr>\n<tr>\n<td><em>errors.message</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Human-readable error message describing what went wrong.</td>\n</tr>\n<tr>\n<td><em>errors.details</em></td>\n<td>Array</td>\n<td>Additional validation error details with specific property-level information.</td>\n</tr>\n<tr>\n<td><em>errors.details[].property</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Name of the property or field that caused the validation error.</td>\n</tr>\n<tr>\n<td><em>errors.details[].message</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Specific error message describing the validation failure.</td>\n</tr>\n<tr>\n<td><em>errors.details[].payload</em></td>\n<td>Object</td>\n<td>Additional context or metadata related to the validation error.</td>\n</tr>\n<tr>\n<td><em>errors.index</em></td>\n<td>Int</td>\n<td>Index position of the failed item in the original request batch.</td>\n</tr>\n<tr>\n<td><em>results</em></td>\n<td>Object</td>\n<td>Successful result for a person merge operation.</td>\n</tr>\n<tr>\n<td><em>results.id</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Unique identifier of the merged person profile.</td>\n</tr>\n<tr>\n<td><em>results.index</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Index position of this person in the original request batch.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["people","3","persons","merge"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"08f8a174-b2c1-4e6e-95d8-0212253ac1c5","name":"207 - Successful merge - Single person","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"persons\": [\n    {\n      \"externalId\": \"3\",\n      \"firstName\": \"Jane\",\n      \"lastName\": \"Smith\",\n      \"address\": \"67 Farringdon Road\",\n      \"city\": \"London\",\n      \"country\": \"United Kingdom\",\n      \"gender\": \"FEMALE\",\n      \"birthDate\": \"1966-01-15\",\n      \"middleName\": \"Janie\",\n      \"preferredLanguage\": \"en-gb\",\n      \"profilePicture\": \"http://profile.com\",\n      \"customAttributes\": {\n        \"Contract Expiry\": \"2018-06-01\",\n        \"Company\": \"Acme\",\n        \"ShoppingCartList\": [\n          {\n            \"productName\": \"Sneakers\",\n            \"productPrice\": 25.33,\n            \"productCategory\": \"Sport Sneakers\",\n            \"productImage\": \"/image1.png\"\n          },\n          {\n            \"productName\": \"T-Shirt\",\n            \"productPrice\": 9.99,\n            \"productCategory\": \"Casual\",\n            \"productImage\": \"/image2.png\"\n          }\n        ]\n      },\n      \"contactInformation\": [\n        {\n          \"identifier\": \"john.doe@example.com\",\n          \"type\": \"EMAIL\"\n        },\n        {\n          \"identifier\": \"41793026727\",\n          \"type\": \"PHONE\"\n        }\n      ],\n      \"tags\": [\n        \"VIP Customers\",\n        \"New Customers\"\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/3/persons/merge"},"status":"Multi-Status","code":207,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errors\": [],\n  \"results\": [\n    {\n      \"id\": 12345,\n      \"index\": 0\n    }\n  ]\n}"},{"id":"e683ada6-5613-4d9c-8476-663160c2d8e3","name":"400 - real VHD response","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"persons\": [\n    {\n      \"externalId\": \"3\",\n      \"firstName\": \"Jane\",\n      \"lastName\": \"Smith\",\n      \"address\": \"67 Farringdon Road\",\n      \"city\": \"London\",\n      \"country\": \"United Kingdom\",\n      \"gender\": \"FEMALE\",\n      \"birthDate\": \"1966-01-15\",\n      \"middleName\": \"Janie\",\n      \"preferredLanguage\": \"en-gb\",\n      \"profilePicture\": \"http://profile.com\",\n      \"customAttributes\": {\n        \"Contract Expiry\": \"2018-06-01\",\n        \"Company\": \"Acme\",\n        \"ShoppingCartList\": [\n          {\n            \"productName\": \"Sneakers\",\n            \"productPrice\": 25.33,\n            \"productCategory\": \"Sport Sneakers\",\n            \"productImage\": \"/image1.png\"\n          },\n          {\n            \"productName\": \"T-Shirt\",\n            \"productPrice\": 9.99,\n            \"productCategory\": \"Casual\",\n            \"productImage\": \"/image2.png\"\n          }\n        ]\n      },\n      \"contactInformation\": [\n        {\n          \"identifier\": \"john.doe@example.com\",\n          \"type\": \"EMAIL\"\n        },\n        {\n          \"identifier\": \"41793026727\",\n          \"type\": \"PHONE\"\n        }\n      ],\n      \"tags\": [\n        \"VIP Customers\",\n        \"New Customers\"\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/3/persons/merge"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": 400104,\n  \"message\": \"Missing required property 'persons'\",\n  \"details\": [\n    {\n      \"property\": \"persons\",\n      \"message\": \"Required, but value is missing\"\n    }\n  ]\n}"},{"id":"1643dd31-0e4f-4c21-9827-5e9fcfea8ed6","name":"401 - Example","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"persons\": [\n    {\n      \"externalId\": \"3\",\n      \"firstName\": \"Jane\",\n      \"lastName\": \"Smith\",\n      \"address\": \"67 Farringdon Road\",\n      \"city\": \"London\",\n      \"country\": \"United Kingdom\",\n      \"gender\": \"FEMALE\",\n      \"birthDate\": \"1966-01-15\",\n      \"middleName\": \"Janie\",\n      \"preferredLanguage\": \"en-gb\",\n      \"profilePicture\": \"http://profile.com\",\n      \"customAttributes\": {\n        \"Contract Expiry\": \"2018-06-01\",\n        \"Company\": \"Acme\",\n        \"ShoppingCartList\": [\n          {\n            \"productName\": \"Sneakers\",\n            \"productPrice\": 25.33,\n            \"productCategory\": \"Sport Sneakers\",\n            \"productImage\": \"/image1.png\"\n          },\n          {\n            \"productName\": \"T-Shirt\",\n            \"productPrice\": 9.99,\n            \"productCategory\": \"Casual\",\n            \"productImage\": \"/image2.png\"\n          }\n        ]\n      },\n      \"contactInformation\": [\n        {\n          \"identifier\": \"john.doe@example.com\",\n          \"type\": \"EMAIL\"\n        },\n        {\n          \"identifier\": \"41793026727\",\n          \"type\": \"PHONE\"\n        }\n      ],\n      \"tags\": [\n        \"VIP Customers\",\n        \"New Customers\"\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/3/persons/merge"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"24dcc3c2-56dd-4d85-8bd4-812fa7e2563e","name":"403 - Example","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"persons\": [\n    {\n      \"externalId\": \"3\",\n      \"firstName\": \"Jane\",\n      \"lastName\": \"Smith\",\n      \"address\": \"67 Farringdon Road\",\n      \"city\": \"London\",\n      \"country\": \"United Kingdom\",\n      \"gender\": \"FEMALE\",\n      \"birthDate\": \"1966-01-15\",\n      \"middleName\": \"Janie\",\n      \"preferredLanguage\": \"en-gb\",\n      \"profilePicture\": \"http://profile.com\",\n      \"customAttributes\": {\n        \"Contract Expiry\": \"2018-06-01\",\n        \"Company\": \"Acme\",\n        \"ShoppingCartList\": [\n          {\n            \"productName\": \"Sneakers\",\n            \"productPrice\": 25.33,\n            \"productCategory\": \"Sport Sneakers\",\n            \"productImage\": \"/image1.png\"\n          },\n          {\n            \"productName\": \"T-Shirt\",\n            \"productPrice\": 9.99,\n            \"productCategory\": \"Casual\",\n            \"productImage\": \"/image2.png\"\n          }\n        ]\n      },\n      \"contactInformation\": [\n        {\n          \"identifier\": \"john.doe@example.com\",\n          \"type\": \"EMAIL\"\n        },\n        {\n          \"identifier\": \"41793026727\",\n          \"type\": \"PHONE\"\n        }\n      ],\n      \"tags\": [\n        \"VIP Customers\",\n        \"New Customers\"\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/3/persons/merge"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"f6ced74d-7679-4ded-bb1c-6fd85e622c12","name":"429 - Example","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"persons\": [\n    {\n      \"externalId\": \"3\",\n      \"firstName\": \"Jane\",\n      \"lastName\": \"Smith\",\n      \"address\": \"67 Farringdon Road\",\n      \"city\": \"London\",\n      \"country\": \"United Kingdom\",\n      \"gender\": \"FEMALE\",\n      \"birthDate\": \"1966-01-15\",\n      \"middleName\": \"Janie\",\n      \"preferredLanguage\": \"en-gb\",\n      \"profilePicture\": \"http://profile.com\",\n      \"customAttributes\": {\n        \"Contract Expiry\": \"2018-06-01\",\n        \"Company\": \"Acme\",\n        \"ShoppingCartList\": [\n          {\n            \"productName\": \"Sneakers\",\n            \"productPrice\": 25.33,\n            \"productCategory\": \"Sport Sneakers\",\n            \"productImage\": \"/image1.png\"\n          },\n          {\n            \"productName\": \"T-Shirt\",\n            \"productPrice\": 9.99,\n            \"productCategory\": \"Casual\",\n            \"productImage\": \"/image2.png\"\n          }\n        ]\n      },\n      \"contactInformation\": [\n        {\n          \"identifier\": \"john.doe@example.com\",\n          \"type\": \"EMAIL\"\n        },\n        {\n          \"identifier\": \"41793026727\",\n          \"type\": \"PHONE\"\n        }\n      ],\n      \"tags\": [\n        \"VIP Customers\",\n        \"New Customers\"\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/3/persons/merge"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"97e9a6fa-3417-4c94-8846-1b8e4df45f42","name":"500 - Example","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"persons\": [\n    {\n      \"externalId\": \"3\",\n      \"firstName\": \"Jane\",\n      \"lastName\": \"Smith\",\n      \"address\": \"67 Farringdon Road\",\n      \"city\": \"London\",\n      \"country\": \"United Kingdom\",\n      \"gender\": \"FEMALE\",\n      \"birthDate\": \"1966-01-15\",\n      \"middleName\": \"Janie\",\n      \"preferredLanguage\": \"en-gb\",\n      \"profilePicture\": \"http://profile.com\",\n      \"customAttributes\": {\n        \"Contract Expiry\": \"2018-06-01\",\n        \"Company\": \"Acme\",\n        \"ShoppingCartList\": [\n          {\n            \"productName\": \"Sneakers\",\n            \"productPrice\": 25.33,\n            \"productCategory\": \"Sport Sneakers\",\n            \"productImage\": \"/image1.png\"\n          },\n          {\n            \"productName\": \"T-Shirt\",\n            \"productPrice\": 9.99,\n            \"productCategory\": \"Casual\",\n            \"productImage\": \"/image2.png\"\n          }\n        ]\n      },\n      \"contactInformation\": [\n        {\n          \"identifier\": \"john.doe@example.com\",\n          \"type\": \"EMAIL\"\n        },\n        {\n          \"identifier\": \"41793026727\",\n          \"type\": \"PHONE\"\n        }\n      ],\n      \"tags\": [\n        \"VIP Customers\",\n        \"New Customers\"\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/3/persons/merge"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"465c7f89-5040-4f49-916f-9b9b8335e36c"},{"name":"Batch people delete","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 204 or 207\", function () {","    pm.expect(pm.response.code).to.be.oneOf([204, 207]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","// A 204 response has no body; check the body only for the other success codes.","if (pm.response.code !== 204) {","    var responseBody;","    pm.test(\"Response body is valid JSON\", function () {","        responseBody = pm.response.json();","    });","","    pm.test(\"Response is an object\", function () {","        pm.expect(responseBody).to.be.an('object');","    });","","    pm.test(\"Response contains the documented fields\", function () {","        [\"results\"].forEach(function (key) {","            pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","        });","    });","","    pm.test(\"'results' is an array\", function () {","        pm.expect(responseBody[\"results\"]).to.be.an('array');","    });","}"],"type":"text/javascript","packages":{}}}],"id":"0c51d0e7-e8b9-433d-a4d2-5868ec0fdefe","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"DELETE","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"people\": [\n    {\n      \"query\": {\n        \"email\": \"john.doe@example.com\"\n      }\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/persons/batch","description":"<p>Use this method to delete multiple persons.<br /><strong>NOTE</strong> Array size of the batch delete request is limited to <code>1000</code> persons.</p>\n<h3 id=\"request-rate-limit\">Request rate limit</h3>\n<p>5 requests / second (per account)</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>people</em></td>\n<td>array of objects</td>\n<td>List of people</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"responses\">Responses</h3>\n<p>Default sucesful response</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>results</td>\n<td>array of objects</td>\n<td>List of any unsuccessful result from the batch operation for each processed entry. Example, email used in the request already exists.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-responses\">Error responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>requestError</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>serviceException</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>Identifier of the error</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Detailed error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-request-fields\">Additional request fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>people[].query</em></td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td><em>people[].query.identifier</em></td>\n<td>String</td>\n<td>Person ID. ID type must match the <code>type</code> parameter. Some channels (e,g., Apple Business Chat) use identifiers that contain unsafe characters. Make sure you URL-encode them in your API request</td>\n</tr>\n<tr>\n<td><em>people[].query.sender</em></td>\n<td>String</td>\n<td>Sender or application ID. <code>sender</code> is required for all identifier types except <code>ID</code>, <code>EXTERNAL_ID</code>, <code>PHONE</code>, <code>EMAIL</code>.</td>\n</tr>\n<tr>\n<td><em>people[].query.type</em></td>\n<td></td>\n<td>Type of the person ID. Can be one of the above</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-response-fields\">Additional response fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results[].errors</em></td>\n<td>Array</td>\n<td>List of errors</td>\n</tr>\n<tr>\n<td><em>results[].query</em></td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td><em>results[].query.identifier</em></td>\n<td>String</td>\n<td>Person ID. ID type must match the <code>type</code> parameter. Some channels (e,g., Apple Business Chat) use identifiers that contain unsafe characters. Make sure you URL-encode them in your API request</td>\n</tr>\n<tr>\n<td><em>results[].query.sender</em></td>\n<td>String</td>\n<td>Sender or application ID. <code>sender</code> is required for all identifier types except <code>ID</code>, <code>EXTERNAL_ID</code>, <code>PHONE</code>, <code>EMAIL</code>.</td>\n</tr>\n<tr>\n<td><em>results[].query.type</em></td>\n<td></td>\n<td>Type of the person ID. Can be one of the above</td>\n</tr>\n<tr>\n<td><em>results[].status</em></td>\n<td>Int</td>\n<td>HTTP status</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["people","2","persons","batch"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"647f5cd8-ec27-4c5c-99fd-fa50979c5e85","name":"Batch people delete","originalRequest":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n  \"people\": [\n    {\n      \"query\": {\n        \"phone\": \"4670123456\"\n      }\n    },\n     {\n      \"query\": {\n        \"email\": \"janewil@example.com\"\n      }\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/persons/batch"},"status":"No Content","code":204,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Date","value":"Thu, 18 May 2023 10:24:17 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684405457968355666"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":null},{"id":"a5c5e9e6-09ba-4160-85b5-b4d2d9960d65","name":"status 207","originalRequest":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n  \"people\": [\n    {\n      \"query\": {\n        \"phone\": \"4670123456\"\n      }\n    },\n     {\n      \"query\": {\n        \"email\": \"janem@example.com\"\n      }\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/persons/batch"},"status":"Multi-Status","code":207,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"132"},{"key":"Date","value":"Thu, 18 May 2023 10:21:20 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684405280736196666"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"results\": [\n        {\n            \"errors\": [\n                {\n                    \"message\": \"Person with (phone=4670123456) does not exist\"\n                }\n            ],\n            \"status\": 409,\n            \"query\": {\n                \"phone\": \"4670123456\"\n            }\n        }\n    ]\n}"}],"_postman_id":"0c51d0e7-e8b9-433d-a4d2-5868ec0fdefe"}],"id":"b3c95fb7-99bb-4001-b36e-1917e2a2d874","description":"<p>GET <a href=\"https://dev.vhdmedia.se/#41ae2f56-19c9-41b2-a32d-91da85847852\">Get a single person or a list of people</a></p>\n<p>Use this method with a query parameter to get a single person. If the query parameter is not specified, this method will return a list of people.</p>\n<p>PUT <a href=\"https://dev.vhdmedia.se/#d9840ed6-d52a-43b1-98cc-27d801fa2c5e\">Update a person</a></p>\n<p>Use this method to overwrite a person profile with the data passed in the request body as follows:<br />1. New values for standard and custom profile attributes replace existing values on the profile. If no value is passed in the request, the attribute is set to empty.<br />2. Tags in the request replace the existing profile tags. If no tags are passed, the existing profile tag list is cleared.<br />3. New contact information (email addresses and phone numbers) in the request replaces the current information on the profile</p>\n<p>POST <a href=\"https://dev.vhdmedia.se/#b5ea26a0-c402-4024-b2b6-ee8290ec62e0\">Create a new person</a></p>\n<p>Use this method to create a new person.</p>\n<p>DEL <a href=\"https://dev.vhdmedia.se/#586619a6-3a6c-4515-900a-5eb8bbdf6e53\">Delete a person</a></p>\n<p>Use this method to delete a person.</p>\n<p>PATCH <a href=\"https://dev.vhdmedia.se/#4aff58d7-495a-4fe2-b382-d9379ef60342\">Partial person update</a></p>\n<p>Use this method to update a person profile with the data passed in the request body as follows:<br />1. New values for standard and custom profile attributes replace existing values on the profile. If no value is passed in the request, the attribute keeps its value.<br />2. Tags in the request are appended to the profile tag list.<br />3. New contact information (email addresses and phone numbers) in the request is appended to the contact list of the profile.</p>\n<p>PUT <a href=\"https://dev.vhdmedia.se/#072a3252-780b-4a40-89e2-193d76290717\">Set contact information to person</a></p>\n<p>Use this method to replace contact information for a particular person. This methods will replace all existing emails and mobile phones with new contact information.</p>\n<p>DEL <a href=\"https://dev.vhdmedia.se/#ac817f02-6654-46f4-9621-749510c3ff47\">Delete contact information to person</a></p>\n<p>Use this method to delete specified emails and mobile phones from a particular person.</p>\n<p>PATCH <a href=\"https://dev.vhdmedia.se/#a02c2143-3bdd-4bc3-83fa-d50ec7785367\">Add contact information to person</a></p>\n<p>Use this method to add emails and mobile phones to a particular person.</p>\n<p>POST <a href=\"https://dev.vhdmedia.se/#fe6ccb25-79d5-442d-968e-9a2e7e8b8fc3\">Batch people create</a></p>\n<p>Use this method to create multiple persons.<br /><strong>NOTE</strong> Array size of the batch create request is limited to <code>1000</code> persons.</p>\n<p>DEL <a href=\"https://dev.vhdmedia.se/#dd1bbe82-e8b1-4fa3-b31b-ad0676d8df0a\">Batch people delete</a></p>\n<p>Use this method to delete multiple persons.<br /><strong>NOTE</strong> Array size of the batch delete request is limited to <code>1000</code> persons.</p>\n<p>PATCH <a href=\"https://dev.vhdmedia.se/#afaa1734-e188-4326-93c7-07cf3c71560e\">Batch people update</a></p>\n<p>Use this method to update multiple persons.<br /><strong>NOTE</strong> Array size of the batch update request is limited to <code>1000</code> persons.</p>\n","_postman_id":"b3c95fb7-99bb-4001-b36e-1917e2a2d874"},{"name":"COMPANY PROFILE","item":[{"name":"Create a new company","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","(function () {","    var calls = [\"/people/2/companies?name=Example\", \"/people/2/companies?name=Company%20name%20one\", \"/people/2/companies?name=Company%20name%20two\"];","    (function next(i) { if (i >= calls.length) { return; } api(\"DELETE\", calls[i], null, function () { next(i + 1); }); })(0);","})();"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"id\", \"name\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","","","","var r = pm.response.json();","pm.environment.set(\"companyId\", String(r.id));"],"type":"text/javascript","packages":{}}}],"id":"8679d7cc-697e-4dc9-861a-e1068d869664","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Example\",\n  \"notes\": \"Sample company\",\n  \"country\": \"Sweden\",\n  \"industry\": \"IT\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/companies","description":"<h3 id=\"request-rate-limit\">Request rate limit</h3>\n<p>5 requests / second (per account)</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>accountManager</td>\n<td>string [ 0 .. 255 ] characters</td>\n<td>Account manager.</td>\n</tr>\n<tr>\n<td>country</td>\n<td>string [ 0 .. 50 ] characters</td>\n<td>Country.</td>\n</tr>\n<tr>\n<td>customAttributes  <br />{  <br />  <br />property name*  <br />  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />object</td>\n<td>List of custom attributes for the company.</td>\n</tr>\n<tr>\n<td>customerStage</td>\n<td>string [ 0 .. 255 ] characters</td>\n<td>Customer stage.</td>\n</tr>\n<tr>\n<td>domains</td>\n<td>array of strings non-empty</td>\n<td>required  <br />  <br />List of domains for the company.</td>\n</tr>\n<tr>\n<td>industry</td>\n<td>string [ 0 .. 255 ] characters</td>\n<td>Industry</td>\n</tr>\n<tr>\n<td>name</td>\n<td>string [ 0 .. 255 ] characters</td>\n<td>required  <br />Company name.  <br /></td>\n</tr>\n<tr>\n<td>notes</td>\n<td>string [ 0 .. 1023 ] characters</td>\n<td>Notes.</td>\n</tr>\n<tr>\n<td>region</td>\n<td>string [ 0 .. 255 ] characters</td>\n<td>Region.</td>\n</tr>\n<tr>\n<td>segment</td>\n<td>string [ 0 .. 255 ] characters</td>\n<td>Segment.</td>\n</tr>\n<tr>\n<td>serviceData  <br />{  <br />property name*  <br />}</td>\n<td>object  <br />  <br />  <br />object</td>\n<td>Company's service information.</td>\n</tr>\n<tr>\n<td>vatNumber</td>\n<td>string [ 0 .. 50 ] characters</td>\n<td>VAT number.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"responses\">Responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>accountManager</td>\n<td>string [ 0 .. 255 ] characters</td>\n<td>Account manager.</td>\n</tr>\n<tr>\n<td>country</td>\n<td>string [ 0 .. 50 ] characters</td>\n<td>Country.</td>\n</tr>\n<tr>\n<td>createdAt</td>\n<td>string</td>\n<td>Date and time of creation. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td>customAttributes  <br />{  <br />  <br />property name*  <br />  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />object</td>\n<td>List of custom attributes for the company.</td>\n</tr>\n<tr>\n<td>customerStage</td>\n<td>string [ 0 .. 255 ] characters</td>\n<td>Customer stage.</td>\n</tr>\n<tr>\n<td>domains</td>\n<td>array of strings non-empty</td>\n<td>required  <br />  <br />List of domains for the company.</td>\n</tr>\n<tr>\n<td>id</td>\n<td>integer</td>\n<td>Unique id of the entity.</td>\n</tr>\n<tr>\n<td>modifiedAt</td>\n<td>string</td>\n<td>Date and time of last modification. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td>modifiedFrom</td>\n<td>string</td>\n<td>Enum: \"API\" \"PORTAL\" \"WEB_SDK\" \"INTEGRATION\" \"PUSH\" \"FACEBOOK\" \"LINE\" \"TELEGRAM\" \"SALESFORCE\" \"DYNAMICS\" \"ZAPIER\" \"FORMS\" \"COMPUTED\" \"ANSWERS\" \"CONVERSATIONS\"  <br />The information which describes the source of the last modification of record.</td>\n</tr>\n<tr>\n<td>industry</td>\n<td>string [ 0 .. 255 ] characters</td>\n<td>Industry</td>\n</tr>\n<tr>\n<td>name</td>\n<td>string [ 0 .. 255 ] characters</td>\n<td>required  <br />Company name.  <br /></td>\n</tr>\n<tr>\n<td>notes</td>\n<td>string [ 0 .. 1023 ] characters</td>\n<td>Notes.</td>\n</tr>\n<tr>\n<td>origin</td>\n<td>string</td>\n<td>Enum: \"API\" \"PORTAL\" \"WEB_SDK\" \"INTEGRATION\" \"PUSH\" \"FACEBOOK\" \"LINE\" \"TELEGRAM\" \"SALESFORCE\" \"DYNAMICS\" \"ZAPIER\" \"FORMS\" \"COMPUTED\" \"ANSWERS\" \"CONVERSATIONS\"  <br />The information which describes the origin of the record.</td>\n</tr>\n<tr>\n<td>region</td>\n<td>string [ 0 .. 255 ] characters</td>\n<td>Region.</td>\n</tr>\n<tr>\n<td>segment</td>\n<td>string [ 0 .. 255 ] characters</td>\n<td>Segment.</td>\n</tr>\n<tr>\n<td>serviceData  <br />{  <br />property name*  <br />}</td>\n<td>object  <br />  <br />  <br />object</td>\n<td>Company's service information.</td>\n</tr>\n<tr>\n<td>vatNumber</td>\n<td>string [ 0 .. 50 ] characters</td>\n<td></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-responses\">Error responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>requestError</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>serviceException</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>Identifier of the error</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Detailed error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-request-fields\">Additional request fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>externalId</em></td>\n<td>String</td>\n<td>Unique ID for a company from your or another external system, 256 characters max</td>\n</tr>\n<tr>\n<td><em>tags</em></td>\n<td>Array</td>\n<td>List of tags for the company.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-response-fields\">Additional response fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>externalId</em></td>\n<td>String</td>\n<td>Unique ID for a company from your or another external system, 256 characters max</td>\n</tr>\n<tr>\n<td><em>tags</em></td>\n<td>Array</td>\n<td>List of tags for the company.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["people","2","companies"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"213c31cc-7e87-4fdf-bc6d-279ddcbd09c6","name":"Create a new company","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"name\": \"Example\",\n  \"notes\": \"notes example\",\n  \"country\": \"Sweden\",\n  \"region\": \"Europe\",\n  \"accountManager\": \"Jane Smith\",\n  \"customerStage\": \"Active\",\n  \"industry\": \"IT\",\n  \"vatNumber\": \"00000\",\n  \"customAttributes\": {\n    \"Contract Expiry\": \"2023-06-01\"\n  },\n  \"domains\": [\n    \"example.com\"\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/companies"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"360"},{"key":"Date","value":"Thu, 18 May 2023 15:23:49 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684423429894686228"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"createdAt\": \"2023-05-18T15:23:49\",\n    \"modifiedAt\": \"2023-05-18T15:23:49\",\n    \"id\": 1,\n    \"name\": \"Example\",\n    \"notes\": \"notes example\",\n    \"country\": \"Sweden\",\n    \"region\": \"Europe\",\n    \"accountManager\": \"Jane Smith\",\n    \"customerStage\": \"Active\",\n    \"industry\": \"IT\",\n    \"vatNumber\": \"00000\",\n    \"customAttributes\": {\n        \"Contract Expiry\": \"2023-06-01\"\n    },\n    \"domains\": [\n        \"example.com\"\n    ],\n    \"origin\": \"API\",\n    \"modifiedFrom\": \"API\"\n}"}],"_postman_id":"8679d7cc-697e-4dc9-861a-e1068d869664"},{"name":"Get a single company or a list of companies","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","",""],"type":"text/javascript","packages":{}}}],"id":"2507464f-2fe7-41b0-826b-c0bd92377e76","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[],"url":"https://go2.vhdmedia.se/people/2/companies?name=Example","description":"<p>Use this method with a query parameter to get a single company. If the query parameter is not specified, this method will return a list of companies.</p>\n<h3 id=\"request-rate-limit\">Request rate limit</h3>\n<p>5 requests / second (per account)</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>Example: name=VHD  <br />Name of company you want to get.</td>\n</tr>\n<tr>\n<td>id</td>\n<td><br />integer</td>\n<td>Example: id=87951351  <br />ID of company you want to get.</td>\n</tr>\n<tr>\n<td>limit</td>\n<td>integer</td>\n<td>Example: limit=20  <br />Maximum number of rows returned per page.</td>\n</tr>\n<tr>\n<td>page</td>\n<td>integer</td>\n<td>Example: page=1  <br />This parameter says which results page you want to get. If both page and limit appear, then page rows are skipped before starting to count the limit rows that are returned.</td>\n</tr>\n<tr>\n<td>includeTotalCount</td>\n<td>boolean</td>\n<td>Example: includeTotalCount=false  <br />Returns total count of companies, if set to true.</td>\n</tr>\n<tr>\n<td>orderBy</td>\n<td>string</td>\n<td><br />  <br />Example: orderBy=modifiedAt:desc  <br />  <br />Results ordering. Possible ordering fields are <code>name</code>, <code>createdAt</code> and <code>modifiedAt</code>. Ordering direction can be specified with modifiers <code>asc</code> for the ascending ordering or <code>desc</code> for the descending one.  <br />  <br /></td>\n</tr>\n<tr>\n<td>filter</td>\n<td>string</td>\n<td>Example: filter={\"#or\":[{\"name\":\"vhd\"},{\"#contains\":{\"notes\":\"another\"}}]}  <br />Allows to filter companies using simple queries. Just pass to the parameter URL encoded query.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"list-of-supported-logical-operators\">List of supported logical operators:</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Logical Operator</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>#and</code></td>\n<td>Joins query clauses with a logical AND returns all records that match the conditions of both clauses.</td>\n</tr>\n<tr>\n<td><code>#or</code></td>\n<td>Joins query clauses with a logical OR returns all records that match the conditions of either clause.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"list-of-supported-comparison-operators\">List of supported comparison operators:</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Comparison Operator</th>\n<th>Supported Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>#eq</code></td>\n<td>string, integer, decimal, date</td>\n<td>Matches values that are equal to a specified value.</td>\n</tr>\n<tr>\n<td><code>#ne</code></td>\n<td>string, integer, decimal, date</td>\n<td>Matches all values that are not equal to a specified value.</td>\n</tr>\n<tr>\n<td><code>#contains</code></td>\n<td>string</td>\n<td>Matches the records that contain a specified value.</td>\n</tr>\n<tr>\n<td><code>#startsWith</code></td>\n<td>string</td>\n<td>Matches the records that start with a specified value.</td>\n</tr>\n<tr>\n<td><code>#endsWith</code></td>\n<td>string</td>\n<td>Matches the records that end with a specified value.</td>\n</tr>\n<tr>\n<td><code>#gt</code></td>\n<td>integer, decimal, date</td>\n<td>Matches values that are greater than a specified value.</td>\n</tr>\n<tr>\n<td><code>#lt</code></td>\n<td>integer, decimal, date</td>\n<td>Matches values that are less than a specified value.</td>\n</tr>\n<tr>\n<td><code>#gte</code></td>\n<td>integer, decimal, date</td>\n<td>Matches values that are greater than or equal to a specified value.</td>\n</tr>\n<tr>\n<td><code>#lte</code></td>\n<td>integer, decimal, date</td>\n<td>Matches values that are less than or equal to a specified value.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"paging-and-ordering\">Paging and ordering</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>limit</code></td>\n<td>int</td>\n<td>If a limit count is given, no more than that many rows will be returned (possibly less, if the query itself yields fewer rows). The default value is 20. The maximum value is 1000.</td>\n</tr>\n<tr>\n<td><code>page</code></td>\n<td>int</td>\n<td>This parameter says to skip that many rows before beginning to return rows. If both page and limit appear, then page rows are skipped before starting to count the limit rows that are returned. The default value is 1.</td>\n</tr>\n<tr>\n<td><code>orderBy</code></td>\n<td>string</td>\n<td>This parameter is used to order your results. If an order is not given, the default order <code>modifiedAt:desc</code> will be applied.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"responses\">Responses</h3>\n<p>Default sucessful response</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>companies  <br />  <br />[  <br />  <br />  <br />  <br />accountManager  <br />  <br />country  <br />  <br />  <br />customAttributes  <br />  <br />  <br />{  <br />  <br />property name*  <br />  <br />}  <br />  <br />customerStage  <br />  <br />  <br />domains  <br />  <br />  <br />  <br />id  <br />  <br />  <br />industry  <br />  <br />  <br />modifiedAt  <br />  <br />  <br />  <br />  <br />modifiedFrom  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />name  <br />  <br />  <br />notes  <br />  <br />  <br />origin  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />region  <br />  <br />  <br />segment  <br />  <br />  <br />serviceData  <br />{  <br />  <br />property name*  <br />  <br />}  <br />  <br />vatNumber  <br />  <br />  <br />]</td>\n<td>array of objects  <br />  <br />  <br />  <br />  <br />  <br />string [ 0 .. 255 ] characters  <br />  <br />string [ 0 .. 50 ] characters  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />  <br />string [ 0 .. 255 ] characters  <br />  <br />  <br />Array of strings non-empty  <br />  <br />  <br />  <br />integer  <br />  <br />  <br />string [ 0 .. 255 ] characters  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />string [ 0 .. 255 ] characters  <br />  <br />  <br />string [ 0 .. 1023 ] characters  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />string [ 0 .. 255 ] characters  <br />  <br />  <br />string [ 0 .. 255 ] characters  <br />  <br />  <br />object  <br />  <br />  <br />object  <br />  <br />  <br />  <br />string [ 0 .. 50 ] characters  <br />  <br /></td>\n<td>Example: name=VHD  <br />Name of company you want to get.  <br />  <br />  <br />  <br />  <br />Account manager.  <br />  <br />Country.  <br />  <br />  <br />List of custom attributes for the company.  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />Customer stage.  <br />  <br />  <br />required  <br />  <br />List of domains for the company.  <br />  <br />Unique id of the entity.  <br />  <br />  <br />Industry.  <br />  <br />  <br />Date and time of last modification. Has the following format: yyyy-MM-dd'T'HH:mm:ss.  <br />  <br />  <br />Enum: \"API\" \"PORTAL\" \"WEB_SDK\" \"INTEGRATION\" \"PUSH\" \"FACEBOOK\" \"LINE\" \"TELEGRAM\" \"SALESFORCE\" \"DYNAMICS\" \"ZAPIER\" \"FORMS\" \"COMPUTED\" \"ANSWERS\" \"CONVERSATIONS\"  <br />The information which describes the source of the last modification of record.  <br />  <br />required  <br />Company name.  <br />  <br />Notes.  <br />  <br />  <br />  <br />Enum: \"API\" \"PORTAL\" \"WEB_SDK\" \"INTEGRATION\" \"PUSH\" \"FACEBOOK\" \"LINE\" \"TELEGRAM\" \"SALESFORCE\" \"DYNAMICS\" \"ZAPIER\" \"FORMS\" \"COMPUTED\" \"ANSWERS\" \"CONVERSATIONS\"  <br />The information which describes the origin of the record.  <br />  <br />Region.  <br />  <br />  <br />Segment.  <br />  <br />  <br />Company's service information.  <br />  <br />  <br />  <br />  <br />  <br />  <br />VAT number.</td>\n</tr>\n<tr>\n<td>limit</td>\n<td><br />integer</td>\n<td>Example: id=11351351  <br />ID of company you want to get.</td>\n</tr>\n<tr>\n<td>orderBy</td>\n<td>string</td>\n<td>Results ordering</td>\n</tr>\n<tr>\n<td>page</td>\n<td>integer</td>\n<td>Page number</td>\n</tr>\n<tr>\n<td>totalCount</td>\n<td>integer</td>\n<td>Total amount of rows</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-responses\">Error responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>requestError</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>serviceException</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>Identifier of the error</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Detailed error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-parameters\">Additional parameters</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>externalId</em></td>\n<td>String</td>\n<td>External ID of company you want to get.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-response-fields\">Additional response fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>companies[].externalId</em></td>\n<td>String</td>\n<td>Unique ID for a company from your or another external system, 256 characters max</td>\n</tr>\n<tr>\n<td><em>companies[].tags</em></td>\n<td>Array</td>\n<td>List of tags for the company.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["people","2","companies"],"host":["go2","vhdmedia","se"],"query":[{"key":"name","value":"Example"}],"variable":[]}},"response":[{"id":"7323225b-10ab-470e-9fd4-4c244087facd","name":"Get a single company or a list of companies","originalRequest":{"method":"GET","header":[],"url":"https://go2.vhdmedia.se/people/2/companies"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"433"},{"key":"Date","value":"Thu, 18 May 2023 15:24:01 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684423441982061827"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"limit\": 100,\n    \"page\": 1,\n    \"orderBy\": \"modifiedAt:desc, id:asc\",\n    \"companies\": [\n        {\n            \"createdAt\": \"2023-05-18T15:23:49\",\n            \"modifiedAt\": \"2023-05-18T15:23:49\",\n            \"id\": 1,\n            \"name\": \"Example\",\n            \"notes\": \"notes example\",\n            \"country\": \"Sweden\",\n            \"region\": \"Europe\",\n            \"accountManager\": \"Jane Smith\",\n            \"customerStage\": \"Active\",\n            \"industry\": \"IT\",\n            \"vatNumber\": \"00000\",\n            \"customAttributes\": {\n                \"Contract Expiry\": \"2023-06-01\"\n            },\n            \"domains\": [\n                \"example.com\"\n            ],\n            \"origin\": \"API\",\n            \"modifiedFrom\": \"API\"\n        }\n    ]\n}"}],"_postman_id":"2507464f-2fe7-41b0-826b-c0bd92377e76"},{"name":"Partial company update","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"id\", \"name\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","",""],"type":"text/javascript","packages":{}}}],"id":"fc1b391d-e89d-4068-98e8-e1f3169f87bd","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"customerStage\": \"Testing\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/companies?name=Example","description":"<p>Partial company update method is used for updating a part of the company information. Exactly one of the query parameters must be included in the query.</p>\n<h3 id=\"request-rate-limit\">Request rate limit</h3>\n<p>5 requests / second (per account)</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>id</td>\n<td>integer</td>\n<td>Example: id=61451351  <br />ID of company you want to delete.</td>\n</tr>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>Example: name=vhd  <br />Name of company you want to delete.</td>\n</tr>\n<tr>\n<td>domain</td>\n<td>string</td>\n<td>Example: domain=company-domain.com  <br />Domain of company you want to delete.</td>\n</tr>\n<tr>\n<td>replaceTags</td>\n<td>boolean</td>\n<td>Example: replaceTags=false  <br />Flag which indicates replacement operation.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>accountManager</td>\n<td>string [ 0 .. 255 ] characters</td>\n<td>Account manager.</td>\n</tr>\n<tr>\n<td>country</td>\n<td>string [ 0 .. 50 ] characters</td>\n<td>Country.</td>\n</tr>\n<tr>\n<td>customAttributes  <br />{  <br />  <br />property name*  <br />  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />object</td>\n<td>List of custom attributes for the company.</td>\n</tr>\n<tr>\n<td>customerStage</td>\n<td>string [ 0 .. 255 ] characters</td>\n<td>Customer stage.</td>\n</tr>\n<tr>\n<td>domains</td>\n<td>array of strings non-empty</td>\n<td>required  <br />  <br />List of domains for the company.</td>\n</tr>\n<tr>\n<td>industry</td>\n<td>string [ 0 .. 255 ] characters</td>\n<td>Industry</td>\n</tr>\n<tr>\n<td>name</td>\n<td>string [ 0 .. 255 ] characters</td>\n<td>required  <br />Company name.  <br /></td>\n</tr>\n<tr>\n<td>notes</td>\n<td>string [ 0 .. 1023 ] characters</td>\n<td>Notes.</td>\n</tr>\n<tr>\n<td>region</td>\n<td>string [ 0 .. 255 ] characters</td>\n<td>Region.</td>\n</tr>\n<tr>\n<td>segment</td>\n<td>string [ 0 .. 255 ] characters</td>\n<td>Segment.</td>\n</tr>\n<tr>\n<td>vatNumber</td>\n<td>string [ 0 .. 50 ] characters</td>\n<td>VAT number.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"responses\">Responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>accountManager</td>\n<td>string [ 0 .. 255 ] characters</td>\n<td>Account manager.</td>\n</tr>\n<tr>\n<td>country</td>\n<td>string [ 0 .. 50 ] characters</td>\n<td>Country.</td>\n</tr>\n<tr>\n<td>createdAt</td>\n<td>string</td>\n<td>Date and time of creation. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td>customAttributes  <br />{  <br />  <br />property name*  <br />  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />object</td>\n<td>List of custom attributes for the company.</td>\n</tr>\n<tr>\n<td>customerStage</td>\n<td>string [ 0 .. 255 ] characters</td>\n<td>Customer stage.</td>\n</tr>\n<tr>\n<td>domains</td>\n<td>array of strings non-empty</td>\n<td>required  <br />  <br />List of domains for the company.</td>\n</tr>\n<tr>\n<td>id</td>\n<td>integer</td>\n<td>Unique id of the entity.</td>\n</tr>\n<tr>\n<td>modifiedAt</td>\n<td>string</td>\n<td>Date and time of last modification. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td>modifiedFrom</td>\n<td>string</td>\n<td>Enum: \"API\" \"PORTAL\" \"WEB_SDK\" \"INTEGRATION\" \"PUSH\" \"FACEBOOK\" \"LINE\" \"TELEGRAM\" \"SALESFORCE\" \"DYNAMICS\" \"ZAPIER\" \"FORMS\" \"COMPUTED\" \"ANSWERS\" \"CONVERSATIONS\"  <br />The information which describes the source of the last modification of record.</td>\n</tr>\n<tr>\n<td>industry</td>\n<td>string [ 0 .. 255 ] characters</td>\n<td>Industry</td>\n</tr>\n<tr>\n<td>name</td>\n<td>string [ 0 .. 255 ] characters</td>\n<td>required  <br />Company name.  <br /></td>\n</tr>\n<tr>\n<td>notes</td>\n<td>string [ 0 .. 1023 ] characters</td>\n<td>Notes.</td>\n</tr>\n<tr>\n<td>origin</td>\n<td>string</td>\n<td>Enum: \"API\" \"PORTAL\" \"WEB_SDK\" \"INTEGRATION\" \"PUSH\" \"FACEBOOK\" \"LINE\" \"TELEGRAM\" \"SALESFORCE\" \"DYNAMICS\" \"ZAPIER\" \"FORMS\" \"COMPUTED\" \"ANSWERS\" \"CONVERSATIONS\"  <br />The information which describes the origin of the record.</td>\n</tr>\n<tr>\n<td>region</td>\n<td>string [ 0 .. 255 ] characters</td>\n<td>Region.</td>\n</tr>\n<tr>\n<td>segment</td>\n<td>string [ 0 .. 255 ] characters</td>\n<td>Segment.</td>\n</tr>\n<tr>\n<td>serviceData  <br />{  <br />property name*  <br />}</td>\n<td>object  <br />  <br />  <br />object</td>\n<td>Company's service information.</td>\n</tr>\n<tr>\n<td>vatNumber</td>\n<td>string [ 0 .. 50 ] characters</td>\n<td></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-responses\">Error responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>requestError</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>serviceException</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>Identifier of the error</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Detailed error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-parameters\">Additional parameters</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>externalId</em></td>\n<td>String</td>\n<td>External ID of company you want to update.</td>\n</tr>\n<tr>\n<td><em>replaceDomains</em></td>\n<td>Boolean</td>\n<td>Flag which indicates domain replacement operation.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-request-fields\">Additional request fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>externalId</em></td>\n<td>String</td>\n<td>Unique ID for a company from your or another external system, 256 characters max</td>\n</tr>\n<tr>\n<td><em>tags</em></td>\n<td>Array</td>\n<td>List of tags for the company.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-response-fields\">Additional response fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>externalId</em></td>\n<td>String</td>\n<td>Unique ID for a company from your or another external system, 256 characters max</td>\n</tr>\n<tr>\n<td><em>tags</em></td>\n<td>Array</td>\n<td>List of tags for the company.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["people","2","companies"],"host":["go2","vhdmedia","se"],"query":[{"key":"name","value":"Example"}],"variable":[]}},"response":[{"id":"0b37bb88-2fb2-4f70-be78-638b05f38af1","name":"Partial company update","originalRequest":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n  \"customerStage\": \"Testing\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/2/companies??id=2&name=Example","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","2","companies"],"query":[{"key":"?id","value":"2"},{"key":"name","value":"Example"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"361"},{"key":"Date","value":"Thu, 18 May 2023 15:45:50 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684424750737543161"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"createdAt\": \"2023-05-18T15:39:30\",\n    \"modifiedAt\": \"2023-05-18T15:45:50\",\n    \"id\": 2,\n    \"name\": \"Example\",\n    \"notes\": \"notes example\",\n    \"country\": \"Sweden\",\n    \"region\": \"Europe\",\n    \"accountManager\": \"Jane Smith\",\n    \"customerStage\": \"Testing\",\n    \"industry\": \"IT\",\n    \"vatNumber\": \"00000\",\n    \"customAttributes\": {\n        \"Contract Expiry\": \"2023-06-01\"\n    },\n    \"domains\": [\n        \"example.com\"\n    ],\n    \"origin\": \"API\",\n    \"modifiedFrom\": \"API\"\n}"}],"_postman_id":"fc1b391d-e89d-4068-98e8-e1f3169f87bd"},{"name":"Add persons to company batch","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});"],"type":"text/javascript","packages":{}}}],"id":"3651f736-6b7b-4ee2-be4c-903d516c3e3c","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"people\": [\n    {\n      \"query\": {\n        \"email\": \"janewilliams@example.com\"\n      }\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/companies/persons?id={{companyId}}","description":"<p>Use this method to add persons to a company.</p>\n<h3 id=\"request-rate-limit\">Request rate limit</h3>\n<p>5 requests / second (per account)</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>id</td>\n<td><br />integer</td>\n<td>Example: id=61451351  <br />ID of company you want to remove persons from.</td>\n</tr>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>Example: name=VHD  <br />Name of company you want to remove persons from.</td>\n</tr>\n<tr>\n<td>domain</td>\n<td>string</td>\n<td>stringExample: domain=<a href=\"http://www.example.com\">www.example.com</a>  <br />  <br />Domain of company you want to remove persons from.  <br />  <br /></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>people  <br />  <br />[{  <br />  <br />query  <br />{  <br />  <br />  <br />  <br />  <br />  <br />  <br />property name  <br />  <br />}  <br />  <br />}]  <br /></td>\n<td>array of objects  <br />  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />object</td>\n<td>List of person profiles. Maximum 1000 entries  <br />  <br />  <br />Query for single person profile. Keys can be either one of the \"contactInformation\" entry, \"external_id\" or \"id\" from the person profile json structure. Person profile keys can be mixed within a single request body</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-responses\">Error responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>requestError</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>serviceException</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>Identifier of the error</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Detailed error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-parameters\">Additional parameters</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>externalId</em></td>\n<td>String</td>\n<td>External ID of company you want to assign persons to.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-request-fields\">Additional request fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>people[].query.identifier</em></td>\n<td>String</td>\n<td>Person ID. ID type must match the <code>type</code> parameter. Some channels (e,g., Apple Business Chat) use identifiers that contain unsafe characters. Make sure you URL-encode them in your API request</td>\n</tr>\n<tr>\n<td><em>people[].query.sender</em></td>\n<td>String</td>\n<td>Sender or application ID. <code>sender</code> is required for all identifier types except <code>ID</code>, <code>EXTERNAL_ID</code>, <code>PHONE</code>, <code>EMAIL</code>.</td>\n</tr>\n<tr>\n<td><em>people[].query.type</em></td>\n<td></td>\n<td>Type of the person ID. Can be one of the above</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["people","2","companies","persons"],"host":["go2","vhdmedia","se"],"query":[{"key":"id","value":"{{companyId}}"}],"variable":[]}},"response":[{"id":"614c5ca2-5150-4d00-8e6a-81de0d567e9b","name":"Add persons to company batch","originalRequest":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n  \"people\": [\n    {\n      \"query\": {\n        \"phone\": \"4670123456\"\n      }\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/2/companies/persons?id=6","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","2","companies","persons"],"query":[{"key":"id","value":"6"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"0"},{"key":"Date","value":"Fri, 19 May 2023 09:21:08 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684488068782108228"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":null}],"_postman_id":"3651f736-6b7b-4ee2-be4c-903d516c3e3c"},{"name":"Remove persons from company batch","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});"],"type":"text/javascript","packages":{}}}],"id":"cc20ba92-4f8a-4d56-91cc-9ab270c86425","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"DELETE","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"people\": [\n    {\n      \"query\": {\n        \"email\": \"janewilliams@example.com\"\n      }\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/companies/persons?id={{companyId}}","description":"<p>Use this method to remove persons from a company.</p>\n<h3 id=\"request-rate-limit\">Request rate limit</h3>\n<p>5 requests / second (per account)</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>id</td>\n<td><br />integer</td>\n<td>Example: id=61451351  <br />ID of company you want to remove persons from.</td>\n</tr>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>Example: name=VHD  <br />Name of company you want to remove persons from.</td>\n</tr>\n<tr>\n<td>domain</td>\n<td>string</td>\n<td>stringExample: domain=<a href=\"http://www.example.com\">www.example.com</a>  <br />  <br />Domain of company you want to remove persons from.  <br />  <br /></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>people  <br />  <br />[{  <br />  <br />query  <br />{  <br />  <br />  <br />  <br />  <br />  <br />  <br />property name  <br />  <br />}  <br />  <br />}]  <br /></td>\n<td>array of objects  <br />  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />object</td>\n<td>List of person profiles. Maximum 1000 entries  <br />  <br />  <br />Query for single person profile. Keys can be either one of the \"contactInformation\" entry, \"external_id\" or \"id\" from the person profile json structure. Person profile keys can be mixed within a single request body</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-responses\">Error responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>requestError</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>serviceException</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>Identifier of the error</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Detailed error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-parameters\">Additional parameters</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>externalId</em></td>\n<td>String</td>\n<td>External ID of company you want to remove persons from.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-request-fields\">Additional request fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>people[].query.identifier</em></td>\n<td>String</td>\n<td>Person ID. ID type must match the <code>type</code> parameter. Some channels (e,g., Apple Business Chat) use identifiers that contain unsafe characters. Make sure you URL-encode them in your API request</td>\n</tr>\n<tr>\n<td><em>people[].query.sender</em></td>\n<td>String</td>\n<td>Sender or application ID. <code>sender</code> is required for all identifier types except <code>ID</code>, <code>EXTERNAL_ID</code>, <code>PHONE</code>, <code>EMAIL</code>.</td>\n</tr>\n<tr>\n<td><em>people[].query.type</em></td>\n<td></td>\n<td>Type of the person ID. Can be one of the above</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["people","2","companies","persons"],"host":["go2","vhdmedia","se"],"query":[{"key":"id","value":"{{companyId}}"}],"variable":[]}},"response":[{"id":"b4d77b7b-50ca-4cfa-89dd-7cb2d8fff5e5","name":"Remove persons from company batch","originalRequest":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n  \"people\": [\n    {\n      \"query\": {\n        \"phone\": \"4670123456\"\n      }\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/2/companies/persons?id=6","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","2","companies","persons"],"query":[{"key":"id","value":"6"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"0"},{"key":"Date","value":"Fri, 19 May 2023 09:26:00 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684488360749616227"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":null}],"_postman_id":"cc20ba92-4f8a-4d56-91cc-9ab270c86425"},{"name":"Batch companies create","event":[{"listen":"test","script":{"exec":["// Tests for Batch companies create.","pm.test(\"Status code is 200 or 207\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200, 207]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","// The response body is empty (null) when everything succeeds, or lists a result for each item.","pm.test(\"Response is empty or contains the 'results' array\", function () {","    var text = pm.response.text();","    if (text && text.trim() !== 'null') {","        pm.expect(pm.response.json()).to.have.property('results').that.is.an('array');","    }","});",""],"type":"text/javascript","packages":{}}}],"id":"95f6cfdc-e9c0-4062-95c9-869074d11a2f","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"companies\": [\n    {\n      \"name\": \"Company name one\",\n      \"country\": \"Sweden\"\n    },\n    {\n      \"name\": \"Company name two\",\n      \"country\": \"Sweden\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/companies/batch","description":"<p>Use this method to create multiple companies.<br /><strong>NOTE</strong> Array size of the batch create request is limited to <code>1000</code> companies.</p>\n<h3 id=\"request-rate-limit\">Request rate limit</h3>\n<p>5 requests / second (per account)</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>companies  <br />  <br /></td>\n<td>array of objects</td>\n<td>List of companies.</td>\n</tr>\n</tbody>\n</table>\n</div><p>[{</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th></th>\n<th></th>\n<th></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>accountManager</td>\n<td>string [ 0 .. 255 ] characters</td>\n<td>Account manager.</td>\n</tr>\n<tr>\n<td>country</td>\n<td>string [ 0 .. 50 ] characters</td>\n<td>Country.</td>\n</tr>\n<tr>\n<td>customAttributes  <br />{  <br />  <br />property name*  <br />  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />object</td>\n<td>List of custom attributes for the company.</td>\n</tr>\n<tr>\n<td>customerStage</td>\n<td>string [ 0 .. 255 ] characters</td>\n<td>Customer stage.</td>\n</tr>\n<tr>\n<td>domains</td>\n<td>array of strings non-empty</td>\n<td>required  <br />  <br />List of domains for the company.</td>\n</tr>\n<tr>\n<td>industry</td>\n<td>string [ 0 .. 255 ] characters</td>\n<td>Industry</td>\n</tr>\n<tr>\n<td>name</td>\n<td>string [ 0 .. 255 ] characters</td>\n<td>required  <br />Company name.  <br /></td>\n</tr>\n<tr>\n<td>notes</td>\n<td>string [ 0 .. 1023 ] characters</td>\n<td>Notes.</td>\n</tr>\n<tr>\n<td>region</td>\n<td>string [ 0 .. 255 ] characters</td>\n<td>Region.</td>\n</tr>\n<tr>\n<td>segment</td>\n<td>string [ 0 .. 255 ] characters</td>\n<td>Segment.</td>\n</tr>\n<tr>\n<td>serviceData  <br />{  <br />property name*  <br />}</td>\n<td>object  <br />  <br />  <br />object</td>\n<td>Company's service information.</td>\n</tr>\n<tr>\n<td>vatNumber</td>\n<td>string [ 0 .. 50 ] characters</td>\n<td>VAT number.</td>\n</tr>\n</tbody>\n</table>\n</div><p>}]</p>\n<h3 id=\"responses\">Responses</h3>\n<p>Default sucessful response</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>results  <br />  <br />[{  <br />  <br />  <br />errors  <br />[{  <br />  <br />message  <br />  <br />}]  <br />  <br />index  <br />  <br />  <br />status  <br />  <br />]}  <br /></td>\n<td>array of objects  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />string  <br />  <br />  <br />  <br />integer integer</td>\n<td>List of any unsuccessful result from the batch operation for each processed entry. Example, name used in the request already exists.  <br />  <br />List of errors  <br />  <br />  <br />Error message  <br />  <br />  <br />  <br />Index of company in request list  <br />  <br />  <br />HTTP status in case of failure  <br /></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-responses\">Error responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>requestError</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>serviceException</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>Identifier of the error</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Detailed error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-request-fields\">Additional request fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>companies[].createdAt</em></td>\n<td>String</td>\n<td>Date and time of creation. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td><em>companies[].externalId</em></td>\n<td>String</td>\n<td>Unique ID for a company from your or another external system, 256 characters max</td>\n</tr>\n<tr>\n<td><em>companies[].id</em></td>\n<td>Int</td>\n<td>Unique id of the entity.</td>\n</tr>\n<tr>\n<td><em>companies[].modifiedAt</em></td>\n<td>String</td>\n<td>Date and time of last modification. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td><em>companies[].modifiedFrom</em></td>\n<td></td>\n<td>The information which describes the source of the last modification of record.</td>\n</tr>\n<tr>\n<td><em>companies[].origin</em></td>\n<td></td>\n<td>The information which describes the origin of the record.</td>\n</tr>\n<tr>\n<td><em>companies[].tags</em></td>\n<td>Array</td>\n<td>List of tags for the company.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-response-fields\">Additional response fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results[].id</em></td>\n<td>Int</td>\n<td>Id of created company</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["people","2","companies","batch"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"ea13cfbd-3d30-4fec-876e-879ac8fca3ec","name":"Batch companies create","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"companies\": [\n    {\n      \"name\": \"Company name one\",\n      \"notes\": \"Some notes\",\n      \"country\": \"Sweden\",\n      \"segment\": \"Some segment\",\n      \"accountManager\": \"Jane Smith\",\n      \"customAttributes\": {\n        \"Contract Expiry\": \"2023-06-01\"\n      },\n      \"domains\": [\n        \"companyone.com\"\n      ]\n    },\n    {\n      \"name\": \"Company name two\",\n      \"notes\": \"Some notes\",\n      \"country\": \"Sweden\",\n      \"segment\": \"Some segment\",\n      \"accountManager\": \"John Smith\",\n      \"customAttributes\": {\n        \"Contract Expiry\": \"2023-06-01\"\n      },\n      \"domains\": [\n        \"companytwo.com\"\n      ]\n    }\n\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/companies/batch"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"4"},{"key":"Date","value":"Thu, 18 May 2023 16:10:39 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684426240135210836"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"null"}],"_postman_id":"95f6cfdc-e9c0-4062-95c9-869074d11a2f"},{"name":"Batch companies update","event":[{"listen":"test","script":{"exec":["// Tests for Batch companies update.","pm.test(\"Status code is 200 or 207\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200, 207]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","// The response body is empty (null) when everything succeeds, or lists a result for each item.","pm.test(\"Response is empty or contains the 'results' array\", function () {","    var text = pm.response.text();","    if (text && text.trim() !== 'null') {","        pm.expect(pm.response.json()).to.have.property('results').that.is.an('array');","    }","});",""],"type":"text/javascript","packages":{}}}],"id":"8d81bf40-0669-45e5-afb3-d267b3843f35","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"companies\": [\n    {\n      \"query\": {\n        \"name\": \"Company name one\"\n      },\n      \"update\": {\n        \"segment\": \"fixed segment\"\n      }\n    },\n    {\n      \"query\": {\n        \"name\": \"Company name two\"\n      },\n      \"update\": {\n        \"segment\": \"fixed segment\"\n      }\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/companies/batch","description":"<p>Use this method to update multiple companies.<br /><strong>NOTE</strong> Array size of the batch update request is limited to <code>1000</code> companies.</p>\n<h3 id=\"request-rate-limit\">Request rate limit</h3>\n<p>5 requests / second (per account)</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>companies  <br />  <br />[{  <br />  <br />query  <br />  <br />}]  <br /></td>\n<td>array of objects  <br />  <br />  <br />  <br />object</td>\n<td>List of companies.  <br />  <br />  <br />  <br />Should contain company object defined as (key, value) pair. Key can be \"id\", \"name\", \"domain\".</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"responses\">Responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>results  <br />  <br />[{  <br />  <br />  <br />errors  <br />[{  <br />  <br />message  <br />  <br />}]  <br />  <br />query  <br />  <br />  <br />status  <br />  <br />]}  <br /></td>\n<td>array of objects  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />string  <br />  <br />  <br />  <br />object</td>\n<td>List of any unsuccessful result from the batch operation for each processed entry. Example, name used in the request already exists.  <br />  <br />List of errors  <br />  <br />  <br />Error message  <br />  <br />  <br />  <br />Query used for company identification  <br />  <br />  <br />HTTP status in case of failure</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-responses\">Error responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>requestError</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>serviceException</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>Identifier of the error</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Detailed error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-request-fields\">Additional request fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>companies[].query.externalId</em></td>\n<td>String</td>\n<td>Company external ID</td>\n</tr>\n<tr>\n<td><em>companies[].update.accountManager</em></td>\n<td>String</td>\n<td>Account manager.</td>\n</tr>\n<tr>\n<td><em>companies[].update.country</em></td>\n<td>String</td>\n<td>Country.</td>\n</tr>\n<tr>\n<td><em>companies[].update.createdAt</em></td>\n<td>String</td>\n<td>Date and time of creation. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td><em>companies[].update.customAttributes</em></td>\n<td>Object</td>\n<td>List of custom attributes for the company.</td>\n</tr>\n<tr>\n<td><em>companies[].update.customerStage</em></td>\n<td>String</td>\n<td>Customer stage.</td>\n</tr>\n<tr>\n<td><em>companies[].update.domains</em></td>\n<td>Array</td>\n<td>List of domains for the company.</td>\n</tr>\n<tr>\n<td><em>companies[].update.industry</em></td>\n<td>String</td>\n<td>Industry.</td>\n</tr>\n<tr>\n<td><em>companies[].update.modifiedAt</em></td>\n<td>String</td>\n<td>Date and time of last modification. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td><em>companies[].update.modifiedFrom</em></td>\n<td></td>\n<td>The information which describes the source of the last modification of record.</td>\n</tr>\n<tr>\n<td><em>companies[].update.notes</em></td>\n<td>String</td>\n<td>Notes.</td>\n</tr>\n<tr>\n<td><em>companies[].update.origin</em></td>\n<td></td>\n<td>The information which describes the origin of the record.</td>\n</tr>\n<tr>\n<td><em>companies[].update.region</em></td>\n<td>String</td>\n<td>Region.</td>\n</tr>\n<tr>\n<td><em>companies[].update.segment</em></td>\n<td>String</td>\n<td>Segment.</td>\n</tr>\n<tr>\n<td><em>companies[].update.serviceData</em></td>\n<td>Object</td>\n<td>Company's service information.</td>\n</tr>\n<tr>\n<td><em>companies[].update.tags</em></td>\n<td>Array</td>\n<td>List of tags for the company.</td>\n</tr>\n<tr>\n<td><em>companies[].update.vatNumber</em></td>\n<td>String</td>\n<td>VAT number.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["people","2","companies","batch"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"46c325ef-a2bc-4749-b6f3-b686c770d955","name":"Batch companies update","originalRequest":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n  \"companies\": [\n    {\n      \"query\": {\n        \"name\": \"Company name one\"\n      },\n      \"update\": {\n        \"segment\": \"fixed segment\",\n        \"domains\": [\n          \"onedomain.com\"\n        ]\n      }\n    },\n    {\n      \"query\": {\n        \"name\": \"Company name two\"\n      },\n      \"update\": {\n        \"segment\": \"fixed segment\",\n        \"domains\": [\n          \"twodomain.com\"\n        ]\n      }\n    }\n  ]\n  \n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/companies/batch"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"4"},{"key":"Date","value":"Fri, 19 May 2023 08:32:21 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684485141335370827"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"null"}],"_postman_id":"8d81bf40-0669-45e5-afb3-d267b3843f35"},{"name":"Delete a company","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 204\", function () {","    pm.expect(pm.response.code).to.be.oneOf([204]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});"],"type":"text/javascript","packages":{}}}],"id":"c6a4c003-adac-4f61-8cab-075dc9865a07","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"DELETE","header":[],"url":"https://go2.vhdmedia.se/people/2/companies?name=Company%20name%20two","description":"<p>Use this method with a query parameter to delete a company. Exactly one of the query parameters must be included in the query.</p>\n<h3 id=\"request-rate-limit\">Request rate limit</h3>\n<p>5 requests / second (per account)</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>id</td>\n<td>integer</td>\n<td>Example: id=11351351  <br />ID of company you want to delete.</td>\n</tr>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>Example: name=vhd  <br />Name of company you want to delete.</td>\n</tr>\n<tr>\n<td>domain</td>\n<td>string</td>\n<td>Example: domain=company-domain.com  <br />Domain of company you want to delete.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-responses\">Error responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>requestError</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>serviceException</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>Identifier of the error</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Detailed error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-parameters\">Additional parameters</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>externalId</em></td>\n<td>String</td>\n<td>External ID of company you want to delete.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["people","2","companies"],"host":["go2","vhdmedia","se"],"query":[{"key":"name","value":"Company%20name%20two"}],"variable":[]}},"response":[{"id":"de2af6c2-1768-4947-a6c6-3827f3e88d51","name":"Delete a company","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"https://go2.vhdmedia.se/people/2/companies?name=example","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","2","companies"],"query":[{"key":"name","value":"example"}]}},"status":"No Content","code":204,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Date","value":"Thu, 18 May 2023 15:29:28 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684423768110882830"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":null}],"_postman_id":"c6a4c003-adac-4f61-8cab-075dc9865a07"},{"name":"Batch companies delete","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 204\", function () {","    pm.expect(pm.response.code).to.be.oneOf([204]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});"],"type":"text/javascript","packages":{}}}],"id":"37c4b44f-13b1-43e7-9abb-a2315882a41b","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"DELETE","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"companies\": [\n    {\n      \"query\": {\n        \"name\": \"Company name one\"\n      }\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/companies/batch","description":"<p>Use this method to delete multiple companies.<br /><strong>NOTE</strong> Array size of the batch delete request is limited to <code>1000</code> companies.</p>\n<h3 id=\"request-rate-limit\">Request rate limit</h3>\n<p>5 requests / second (per account)</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>companies  <br />  <br />[{  <br />  <br />query  <br />  <br />}]  <br /></td>\n<td>array of objects  <br />  <br />  <br />  <br />object</td>\n<td>List of companies.  <br />  <br />  <br />  <br />Should contain company object defined as (key, value) pair. Key can be \"id\", \"name\", \"domain\".</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"responses\">Responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>results  <br />  <br />[{  <br />  <br />  <br />errors  <br />[{  <br />  <br />message  <br />  <br />}]  <br />  <br />query  <br />  <br />  <br />status  <br />  <br />]}  <br /></td>\n<td>array of objects  <br />  <br />  <br />  <br />  <br />array of objects  <br />  <br />  <br />string  <br />  <br />  <br />  <br />object</td>\n<td>List of any unsuccessful result from the batch operation for each processed entry. Example, name used in the request already exists.  <br />  <br />List of errors  <br />  <br />  <br />Error message  <br />  <br />  <br />  <br />Query used for company identification  <br />  <br />  <br />HTTP status in case of failure  <br /></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-responses\">Error responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>requestError</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>serviceException</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>Identifier of the error</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Detailed error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-request-fields\">Additional request fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>companies[].query.externalId</em></td>\n<td>String</td>\n<td>Company external ID</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["people","2","companies","batch"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"dcc5dd10-5024-4318-b20f-d4fc5984410a","name":"Batch companies delete","originalRequest":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n  \"companies\": [\n    {\n      \"query\": {\n        \"name\": \"Company name two\"\n      }\n    },\n     {\n      \"query\": {\n        \"name\": \"Company name one\"\n      }\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/companies/batch"},"status":"No Content","code":204,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Date","value":"Fri, 19 May 2023 08:21:49 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684484509607778837"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":null}],"_postman_id":"37c4b44f-13b1-43e7-9abb-a2315882a41b"}],"id":"388a4bd4-8a81-4cd2-9e3c-864472ab3aa2","description":"<p>GET <a href=\"https://dev.vhdmedia.se/#c524be37-9656-4a53-be0b-3957328a5456\">Get a single company or a list of companies</a></p>\n<p>Use this method with a query parameter to get a single company. If the query parameter is not specified, this method will return a list of companies.</p>\n<p>POST <a href=\"https://dev.vhdmedia.se/#4731e19b-e781-4d55-b7ac-e0ee37d5546b\">Create a new company</a></p>\n<p>Use this method to create a new company.</p>\n<p>DEL <a href=\"https://dev.vhdmedia.se/#6c9e7417-65af-408d-9c9e-ece5b2dbe2c9\">Delete a company</a></p>\n<p>Use this method with a query parameter to delete a company. Exactly one of the query parameters must be included in the query.</p>\n<p>PATCH <a href=\"https://dev.vhdmedia.se/#fdef4971-93a1-4148-a859-82ec998fde7d\">Partial company update</a></p>\n<p>Partial company update method is used for updating a part of the company information. Exactly one of the query parameters must be included in the query.</p>\n<p>POST <a href=\"https://dev.vhdmedia.se/#33d1e6d5-0543-49ff-b39a-f04577d01259\">Batch companies create</a></p>\n<p>Use this method to create multiple companies.<br /><strong>NOTE</strong> Array size of the batch create request is limited to <code>1000</code> companies.</p>\n<p>DEL <a href=\"https://dev.vhdmedia.se/#0fa2eca0-6184-48a0-94f1-d5bfb154361b\">Batch companies delete</a></p>\n<p>Use this method to delete multiple companies.<br /><strong>NOTE</strong> Array size of the batch delete request is limited to <code>1000</code> companies.</p>\n<p>PATCH <a href=\"https://dev.vhdmedia.se/#6b720bf9-a349-46ff-9806-734e4ba0c77d\">Batch companies update</a></p>\n<p>Use this method to update multiple companies.<br /><strong>NOTE</strong> Array size of the batch update request is limited to <code>1000</code> companies.</p>\n<p>DEL <a href=\"https://dev.vhdmedia.se/#6a8b90d9-98da-43fc-8203-7db342a3ed10\">Remove persons from company batch</a></p>\n<p>Use this method to remove persons from a company.</p>\n<p>PATCH <a href=\"https://dev.vhdmedia.se/#7877701c-4999-4fd3-aba0-4e181d14ca0e\">Add persons to company batch</a></p>\n<p>Use this method to add persons to a company.</p>\n","_postman_id":"388a4bd4-8a81-4cd2-9e3c-864472ab3aa2"},{"name":"TAGS","item":[{"name":"Create a new tag","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","(function () {","    var calls = [\"/people/2/tags/Vip\"];","    (function next(i) { if (i >= calls.length) { return; } api(\"DELETE\", calls[i], null, function () { next(i + 1); }); })(0);","})();"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"name\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});"],"type":"text/javascript","packages":{}}}],"id":"615be2bb-addf-4984-9811-01c728d8e141","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Vip\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/tags","description":"<p>Use this method to create a new tag.</p>\n<h3 id=\"request-rate-limit\">Request rate limit</h3>\n<p>5 requests/second (per account)</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>Tag name, 256 characters max</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"responses\">Responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>createdAt</td>\n<td>string</td>\n<td>Date and time of creation. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td>modieifedAt</td>\n<td>string</td>\n<td>Date and time of last modification. Has the following format: yyyy-MM-dd'T'HH:mm:ss</td>\n</tr>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>Tag name, 256 characters max</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-responses\">Error responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>requestError</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>serviceException</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>Identifier of the error</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Detailed error description</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-request-fields\">Additional request fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>id</em></td>\n<td>Int</td>\n<td>Unique id of the entity.</td>\n</tr>\n<tr>\n<td><em>modifiedAt</em></td>\n<td>String</td>\n<td>Date and time of last modification. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-response-fields\">Additional response fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>id</em></td>\n<td>Int</td>\n<td>Unique id of the entity.</td>\n</tr>\n<tr>\n<td><em>modifiedAt</em></td>\n<td>String</td>\n<td>Date and time of last modification. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["people","2","tags"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"7acf62e4-38c7-4e09-b543-58ba31e3778c","name":"Create a new tag","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"name\": \"Vip\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/tags"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"83"},{"key":"Date","value":"Fri, 19 May 2023 14:51:41 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684507902176481828"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"createdAt\": \"2023-05-19T14:51:42\",\n    \"modifiedAt\": \"2023-05-19T14:51:42\",\n    \"name\": \"Vip\"\n}"}],"_postman_id":"615be2bb-addf-4984-9811-01c728d8e141"},{"name":"Get list of tags","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","",""],"type":"text/javascript","packages":{}}}],"id":"18bc2043-2fa3-4b8c-aa60-d3a18bbb4ccd","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[],"url":"https://go2.vhdmedia.se/people/2/tags","description":"<p>Use this method to get a list of tags with pagination.</p>\n<h3 id=\"request-rate-limit\">Request rate limit</h3>\n<p>5 requests / second (per account)</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>limit</td>\n<td><br />integer</td>\n<td>Example: limit=100</td>\n</tr>\n<tr>\n<td>page</td>\n<td>integer</td>\n<td>Example: page=1</td>\n</tr>\n<tr>\n<td>orderBy</td>\n<td>string</td>\n<td>Example: orderBy=name:asc</td>\n</tr>\n<tr>\n<td>includeTotalCount</td>\n<td>boolean</td>\n<td>Example: includeTotalCount=false</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<p>Array [</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>createsAt</td>\n<td>string</td>\n<td>Date and time of creation. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td>modifiedAt</td>\n<td>string</td>\n<td>Date and time of last modification. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>Tag name, 256 characters max</td>\n</tr>\n</tbody>\n</table>\n</div><p>]</p>\n<h3 id=\"error-responses\">Error responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>requestError</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>serviceException</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>Identifier of the error</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Detailed error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-response-fields\">Additional response fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>[].createdAt</em></td>\n<td>String</td>\n<td>Date and time of creation. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td><em>[].id</em></td>\n<td>Int</td>\n<td>Unique id of the entity.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["people","2","tags"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"ff9f3de7-eec6-4abd-abf2-f99b410c2122","name":"Get list of tags","originalRequest":{"method":"GET","header":[],"url":"https://go2.vhdmedia.se/people/2/tags"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"416"},{"key":"Date","value":"Fri, 19 May 2023 14:51:54 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684507914569741227"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"limit\": 100,\n    \"page\": 1,\n    \"orderBy\": \"name:asc, id:asc\",\n    \"tags\": [\n        {\n            \"createdAt\": \"2023-05-17T12:10:04\",\n            \"modifiedAt\": \"2023-05-17T12:10:04\",\n            \"name\": \"New Customers\"\n        },\n        {\n            \"createdAt\": \"2023-05-16T11:33:06\",\n            \"modifiedAt\": \"2023-05-16T11:33:06\",\n            \"name\": \"SOS\"\n        },\n        {\n            \"createdAt\": \"2023-05-17T12:10:04\",\n            \"modifiedAt\": \"2023-05-17T12:10:04\",\n            \"name\": \"VIP Customers\"\n        },\n        {\n            \"createdAt\": \"2023-05-19T14:51:42\",\n            \"modifiedAt\": \"2023-05-19T14:51:42\",\n            \"name\": \"Vip\"\n        }\n    ]\n}"}],"_postman_id":"18bc2043-2fa3-4b8c-aa60-d3a18bbb4ccd"},{"name":"Get a tag","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"name\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});"],"type":"text/javascript","packages":{}}}],"id":"f6867c78-ef8c-4392-9cb8-81277abf7fc0","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[],"url":"https://go2.vhdmedia.se/people/2/tags/Vip","description":"<p>Use this method to get a single tag.</p>\n<h3 id=\"request-rate-limit\">Request rate limit</h3>\n<p>5 requests / second (per account)</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>Required.  <br />  <br />Example: name=Vip  <br />Name of the tag.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response\">Response</h3>\n<p>Array [</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>createsAt</td>\n<td>string</td>\n<td>Date and time of creation. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td>modifiedAt</td>\n<td>string</td>\n<td>Date and time of last modification. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>Tag name, 256 characters max</td>\n</tr>\n</tbody>\n</table>\n</div><p>]</p>\n<h3 id=\"error-responses\">Error responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>requestError</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>serviceException</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>Identifier of the error</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Detailed error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-response-fields\">Additional response fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>createdAt</em></td>\n<td>String</td>\n<td>Date and time of creation. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td><em>id</em></td>\n<td>Int</td>\n<td>Unique id of the entity.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["people","2","tags","Vip"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"eb10be17-feae-4122-b06a-34f44e0654ff","name":"Get a tag","originalRequest":{"method":"GET","header":[],"url":"https://go2.vhdmedia.se/people/2/tags/{{name}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"83"},{"key":"Date","value":"Fri, 19 May 2023 14:54:06 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684508046606325830"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"createdAt\": \"2023-05-19T14:51:42\",\n    \"modifiedAt\": \"2023-05-19T14:51:42\",\n    \"name\": \"Vip\"\n}"}],"_postman_id":"f6867c78-ef8c-4392-9cb8-81277abf7fc0"},{"name":"Add tag to people batch","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});"],"type":"text/javascript","packages":{}}}],"id":"6d6af89f-5f58-4111-9a06-98bad3c7a96d","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"people\": [\n    {\n      \"query\": {\n        \"email\": \"janewilliams@example.com\"\n      }\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/tags/Vip/persons","description":"<p>This method allows you to assign tag to multiple people.<br /><strong>NOTE</strong> Array size of the batch add request is limited to <code>1000</code> people.</p>\n<h3 id=\"request-rate-limit\">Request rate limit</h3>\n<p>5 requests / second (per account)</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>Required.  <br />  <br />Example: name=Vip  <br />Name of the tag.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>people  <br />  <br />[{  <br />  <br />query  <br />{  <br />  <br />  <br />  <br />  <br />  <br />  <br />property name  <br />  <br />}  <br />  <br />}]  <br /></td>\n<td>array of objects  <br />  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />object</td>\n<td>List of person profiles. Maximum 1000 entries  <br />  <br />  <br />Query for single person. Example: \"email\": \"<a href=\"mailto:janesmith@example.com\">janesmith@example.com</a>\"</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-responses\">Error responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>requestError</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>serviceException</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>Identifier of the error</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Detailed error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-request-fields\">Additional request fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>people[].query.identifier</em></td>\n<td>String</td>\n<td>Person ID. ID type must match the <code>type</code> parameter. Some channels (e,g., Apple Business Chat) use identifiers that contain unsafe characters. Make sure you URL-encode them in your API request</td>\n</tr>\n<tr>\n<td><em>people[].query.sender</em></td>\n<td>String</td>\n<td>Sender or application ID. <code>sender</code> is required for all identifier types except <code>ID</code>, <code>EXTERNAL_ID</code>, <code>PHONE</code>, <code>EMAIL</code>.</td>\n</tr>\n<tr>\n<td><em>people[].query.type</em></td>\n<td></td>\n<td>Type of the person ID. Can be one of the above</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["people","2","tags","Vip","persons"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"70eae40a-fcd9-4bee-b328-4839a12e5371","name":"Add tag to people batch","originalRequest":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n  \"people\": [\n    {\n      \"query\": {\n        \"email\": \"johndoe@example.com\"\n      }\n    },{\n      \"query\": {\n        \"email\": \"janesm@example.com\"\n      }\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/tags/ShoppingCartList/persons"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"0"},{"key":"Date","value":"Fri, 19 May 2023 15:43:05 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684510985545918829"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":null}],"_postman_id":"6d6af89f-5f58-4111-9a06-98bad3c7a96d"},{"name":"Remove tag from people batch","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 204\", function () {","    pm.expect(pm.response.code).to.be.oneOf([204]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});"],"type":"text/javascript","packages":{}}}],"id":"9c84a050-753d-4857-ada0-95db4d96a6bf","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"DELETE","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"people\": [\n    {\n      \"query\": {\n        \"email\": \"janewilliams@example.com\"\n      }\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/tags/Vip/persons","description":"<p>This method allows you to remove tags from multiple people.<br /><strong>NOTE</strong> Array size of the batch remove request is limited to <code>1000</code> people.</p>\n<h3 id=\"request-rate-limit\">Request rate limit</h3>\n<p>5 requests / second (per account)</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>Required.  <br />  <br />Example: name=Vip  <br />Name of the tag.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>people  <br />  <br />[{  <br />  <br />query  <br />{  <br />  <br />  <br />  <br />  <br />  <br />  <br />property name  <br />  <br />}  <br />  <br />}]  <br /></td>\n<td>array of objects  <br />  <br />  <br />  <br />object  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />object</td>\n<td>List of person profiles. Maximum 1000 entries  <br />  <br />  <br />Query for single person. Example: \"email\": \"<a href=\"mailto:janesmith@example.com\">janesmith@example.com</a>\"</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-responses\">Error responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>requestError</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>serviceException</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>Identifier of the error</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Detailed error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-request-fields\">Additional request fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>people[].query.identifier</em></td>\n<td>String</td>\n<td>Person ID. ID type must match the <code>type</code> parameter. Some channels (e,g., Apple Business Chat) use identifiers that contain unsafe characters. Make sure you URL-encode them in your API request</td>\n</tr>\n<tr>\n<td><em>people[].query.sender</em></td>\n<td>String</td>\n<td>Sender or application ID. <code>sender</code> is required for all identifier types except <code>ID</code>, <code>EXTERNAL_ID</code>, <code>PHONE</code>, <code>EMAIL</code>.</td>\n</tr>\n<tr>\n<td><em>people[].query.type</em></td>\n<td></td>\n<td>Type of the person ID. Can be one of the above</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["people","2","tags","Vip","persons"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"6a8afe83-2d04-4b82-bf56-26d08c52ee67","name":"Remove tag from people batch","originalRequest":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n  \"people\": [\n    {\n      \"query\": {\n        \"email\": \"johndoe@wxample.com\"\n      }\n    },{\n      \"query\": {\n        \"email\": \"janesm@example.com\"\n      }\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/tags/{{name}}/persons"},"status":"No Content","code":204,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Date","value":"Fri, 19 May 2023 15:43:53 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684511034436912827"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":null}],"_postman_id":"9c84a050-753d-4857-ada0-95db4d96a6bf"},{"name":"Delete a tag","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 204\", function () {","    pm.expect(pm.response.code).to.be.oneOf([204]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});"],"type":"text/javascript","packages":{}}}],"id":"ecf3a2e3-7906-48b8-8099-7f8f77051d00","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"DELETE","header":[],"url":"https://go2.vhdmedia.se/people/2/tags/Vip","description":"<p>Use this method to delete the existing tag.</p>\n<h3 id=\"request-rate-limit\">Request rate limit</h3>\n<p>5 requests / second (per account)</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>Example: name=Vip  <br />Name of the tag.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-responses\">Error responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>requestError</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>serviceException</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>Identifier of the error</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Detailed error description</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["people","2","tags","Vip"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"8603bc74-2962-4501-a545-0c803d6e3f16","name":"Delete a tag","originalRequest":{"method":"DELETE","header":[],"url":"https://go2.vhdmedia.se/people/2/tags/{{name}}"},"status":"No Content","code":204,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Date","value":"Fri, 19 May 2023 15:00:54 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684508455287899837"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":null}],"_postman_id":"ecf3a2e3-7906-48b8-8099-7f8f77051d00"}],"id":"545d856f-3832-48ec-9a5c-19ea0c4cd6de","_postman_id":"545d856f-3832-48ec-9a5c-19ea0c4cd6de","description":""},{"name":"CUSTOM ATTRIBUTES","item":[{"name":"Create a custom attribute","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","(function () {","    var calls = [\"/people/2/customAttributes/ContractExpiry\", \"/people/2/customAttributes/ShoppingCartList\"];","    (function next(i) { if (i >= calls.length) { return; } api(\"DELETE\", calls[i], null, function () { next(i + 1); }); })(0);","})();"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"name\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});","",""],"type":"text/javascript","packages":{}}}],"id":"a9baebed-a287-4e32-bf56-6484b7d76b59","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"ContractExpiry\",\n  \"dataType\": \"DATE\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/customAttributes","description":"<p>Create a new custom attribute by using this method.</p>\n<h3 id=\"request-rate-limit\">Request rate limit</h3>\n<p>5 requests / second (per account)</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>dataType</td>\n<td>string</td>\n<td>Enum: \"STRING\" \"DECIMAL\" \"INTEGER\" \"BOOLEAN\" \"DATE\" \"DATE_TIME\" \"LIST_OF_OBJECTS\"  <br />Custom attribute type.</td>\n</tr>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>Custom attribute name, 256 characters max. Invalid characters: {}[].</td>\n</tr>\n<tr>\n<td>objectSchema  <br />  <br />{  <br />  <br />  <br />  <br />  <br />  <br />property name  <br />  <br />  <br />  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />string</td>\n<td>Object schema for LIST_OF_OBJECTS type. Defines the shape of the list items.  <br />  <br />Enum: \"STRING\" \"DECIMAL\" \"INTEGER\" \"BOOLEAN\" \"DATE\" \"DATE_TIME\" \"LIST_OF_OBJECTS\"</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"responses\">Responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>createdAt  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />dataType  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />modifiedAt  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />name  <br />  <br />  <br />  <br />  <br />  <br />  <br />objectSchema  <br />  <br />{  <br />  <br />property name  <br />  <br />}  <br />  <br />  <br />  <br /></td>\n<td>string  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br /></td>\n<td>Date and time of creation. Has the following format: yyyy-MM-dd'T'HH:mm:ss  <br />  <br />Enum: \"STRING\" \"DECIMAL\" \"INTEGER\" \"BOOLEAN\" \"DATE\" \"DATE_TIME\" \"LIST_OF_OBJECTS\"  <br />Custom attribute type.  <br />  <br />Date and time of last modification. Has the following format: yyyy-MM-dd'T'HH:mm:ss.  <br />Custom attribute name, 256 characters max. Invalid characters: {}[].  <br />  <br />  <br />  <br />  <br />  <br />  <br />Enum: \"STRING\" \"DECIMAL\" \"INTEGER\" \"BOOLEAN\" \"DATE\" \"DATE_TIME\" \"LIST_OF_OBJECTS\"  <br /></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-responses\">Error responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>requestError</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>serviceException</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>Identifier of the error</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Detailed error description.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["people","2","customAttributes"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"e3fb657d-13e0-4c4c-8790-1734d70a0bd4","name":"Create a custom attribute LIst of Objects","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n\"name\": \"ShoppingCartList\",\n\"dataType\": \"LIST_OF_OBJECTS\",\n\"objectSchema\" :      \n  {\n\n\"productName\": \"STRING\",\n\"productPrice\": \"DECIMAL\",\n\"productCategory\": \"STRING\",\n\"productImage\": \"STRING\"\n        }\n\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/customAttributes"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"257"},{"key":"Date","value":"Mon, 08 May 2023 14:09:08 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1683554948651075836"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"createdAt\": \"2023-05-08T14:09:08\",\n    \"modifiedAt\": \"2023-05-08T14:09:08\",\n    \"name\": \"ShoppingCartList\",\n    \"dataType\": \"LIST_OF_OBJECTS\",\n    \"objectSchema\": {\n        \"productName\": \"STRING\",\n        \"productPrice\": \"DECIMAL\",\n        \"productCategory\": \"STRING\",\n        \"productImage\": \"STRING\",\n        \"__id\": \"STRING\"\n    }\n}"},{"id":"b5893b0f-339d-4b61-a592-d5e333e226be","name":"Create a custom attribute","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"name\": \"Contract Expiry Date\",\n  \"dataType\": \"DATE\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/customAttributes"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"118"},{"key":"Date","value":"Mon, 08 May 2023 15:03:46 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1683558227064967835"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"createdAt\": \"2023-05-08T15:03:47\",\n    \"modifiedAt\": \"2023-05-08T15:03:47\",\n    \"name\": \"Contract Expiry Date\",\n    \"dataType\": \"DATE\"\n}"}],"_postman_id":"a9baebed-a287-4e32-bf56-6484b7d76b59"},{"name":"Create a custom attribute (list of objects)","event":[{"listen":"test","script":{"exec":["// Tests for Create a custom attribute (list of objects).","pm.test(\"Status code is 200\", function () { pm.expect(pm.response.code).to.eql(200); });","pm.test(\"The attribute is created with its schema\", function () {","    var j = pm.response.json();","    pm.expect(j.name).to.eql(\"ShoppingCartList\");","    pm.expect(j.dataType).to.eql(\"LIST_OF_OBJECTS\");","    pm.expect(j.objectSchema).to.include.all.keys(\"productName\", \"productPrice\");","});"],"type":"text/javascript","packages":{}}}],"id":"d5c12aea-87f6-4eca-ae58-9e97b3da8508","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"ShoppingCartList\",\n  \"dataType\": \"LIST_OF_OBJECTS\",\n  \"objectSchema\": {\n    \"productName\": \"STRING\",\n    \"productPrice\": \"DECIMAL\",\n    \"productCategory\": \"STRING\",\n    \"productImage\": \"STRING\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/customAttributes","description":"<p>Create an attribute that holds a list of objects, here a shopping cart. The person list requests (<strong>PERSON LISTS (API v3)</strong>) work on this attribute.</p>\n<p>Create a new custom attribute by using this method.</p>\n<h3 id=\"request-rate-limit\">Request rate limit</h3>\n<p>5 requests / second (per account)</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>dataType</td>\n<td>string</td>\n<td>Enum: \"STRING\" \"DECIMAL\" \"INTEGER\" \"BOOLEAN\" \"DATE\" \"DATE_TIME\" \"LIST_OF_OBJECTS\"  <br />Custom attribute type.</td>\n</tr>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>Custom attribute name, 256 characters max. Invalid characters: {}[].</td>\n</tr>\n<tr>\n<td>objectSchema  <br />  <br />{  <br />  <br />  <br />  <br />  <br />  <br />property name  <br />  <br />  <br />  <br />}</td>\n<td>object  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />string</td>\n<td>Object schema for LIST_OF_OBJECTS type. Defines the shape of the list items.  <br />  <br />Enum: \"STRING\" \"DECIMAL\" \"INTEGER\" \"BOOLEAN\" \"DATE\" \"DATE_TIME\" \"LIST_OF_OBJECTS\"</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"responses\">Responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>createdAt  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />dataType  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />modifiedAt  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />name  <br />  <br />  <br />  <br />  <br />  <br />  <br />objectSchema  <br />  <br />{  <br />  <br />property name  <br />  <br />}  <br />  <br />  <br />  <br /></td>\n<td>string  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br /></td>\n<td>Date and time of creation. Has the following format: yyyy-MM-dd'T'HH:mm:ss  <br />  <br />Enum: \"STRING\" \"DECIMAL\" \"INTEGER\" \"BOOLEAN\" \"DATE\" \"DATE_TIME\" \"LIST_OF_OBJECTS\"  <br />Custom attribute type.  <br />  <br />Date and time of last modification. Has the following format: yyyy-MM-dd'T'HH:mm:ss.  <br />Custom attribute name, 256 characters max. Invalid characters: {}[].  <br />  <br />  <br />  <br />  <br />  <br />  <br />Enum: \"STRING\" \"DECIMAL\" \"INTEGER\" \"BOOLEAN\" \"DATE\" \"DATE_TIME\" \"LIST_OF_OBJECTS\"  <br /></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-responses\">Error responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>requestError</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>serviceException</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>Identifier of the error</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Detailed error description.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["people","2","customAttributes"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"daf8df6b-e411-4448-918f-eca2cf0d7834","name":"Create a custom attribute LIst of Objects","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n\"name\": \"ShoppingCartList\",\n\"dataType\": \"LIST_OF_OBJECTS\",\n\"objectSchema\" :      \n  {\n\n\"productName\": \"STRING\",\n\"productPrice\": \"DECIMAL\",\n\"productCategory\": \"STRING\",\n\"productImage\": \"STRING\"\n        }\n\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/customAttributes"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"257"},{"key":"Date","value":"Mon, 08 May 2023 14:09:08 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1683554948651075836"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"createdAt\": \"2023-05-08T14:09:08\",\n    \"modifiedAt\": \"2023-05-08T14:09:08\",\n    \"name\": \"ShoppingCartList\",\n    \"dataType\": \"LIST_OF_OBJECTS\",\n    \"objectSchema\": {\n        \"productName\": \"STRING\",\n        \"productPrice\": \"DECIMAL\",\n        \"productCategory\": \"STRING\",\n        \"productImage\": \"STRING\",\n        \"__id\": \"STRING\"\n    }\n}"},{"id":"ed06796a-0e90-48bf-ad2c-630e569b8cc5","name":"Create a custom attribute","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"name\": \"Contract Expiry Date\",\n  \"dataType\": \"DATE\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/customAttributes"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"118"},{"key":"Date","value":"Mon, 08 May 2023 15:03:46 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1683558227064967835"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"createdAt\": \"2023-05-08T15:03:47\",\n    \"modifiedAt\": \"2023-05-08T15:03:47\",\n    \"name\": \"Contract Expiry Date\",\n    \"dataType\": \"DATE\"\n}"}],"_postman_id":"d5c12aea-87f6-4eca-ae58-9e97b3da8508"},{"name":"Get a list of custom attributes","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","",""],"type":"text/javascript","packages":{}}}],"id":"9b66aa49-357b-448e-993c-aba3e0ceb0b4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[],"body":{"mode":"raw","raw":""},"url":"https://go2.vhdmedia.se/people/2/customAttributes","description":"<p>Get a list of custom attributes using this method.</p>\n<h3 id=\"request-rate-limit\">Request rate limit</h3>\n<p>5 requests / second (per account)</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>limit</td>\n<td>integer</td>\n<td>Example: limit=100  <br />Limit how many rows will be returned (but possibly less, if the query itself yields fewer rows).</td>\n</tr>\n<tr>\n<td>page</td>\n<td>integer</td>\n<td>Example: page=1  <br />This parameter says which results page you want to get. If both page and limit appear, then page rows are skipped before starting to count the limit rows that are returned</td>\n</tr>\n<tr>\n<td>includeTotalCount</td>\n<td>boolean</td>\n<td>Example: includeTotalCount=false  <br />Will return total count of custom attributes if set to true.</td>\n</tr>\n<tr>\n<td>orderBy</td>\n<td>string</td>\n<td>Example: orderBy=name:asc  <br />Results ordering. Possible ordering fields are name, createdAt and modifiedAt. Ordering direction can be specified with modifiers asc for the ascending ordering or desc for the descending one.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"responses\">Responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>customAttributes  <br />  <br />[{  <br />  <br />createdAt  <br />  <br />  <br />dataType  <br />  <br />  <br />  <br />  <br />modifiedAt  <br />  <br />  <br />  <br />  <br />name  <br />  <br />  <br />  <br />  <br />objectSchema  <br />  <br />{  <br />  <br />property name  <br />  <br />}  <br />  <br />}]  <br />  <br />limit  <br />  <br />  <br />  <br />orderBy  <br />  <br />  <br />page  <br />  <br />  <br />totalCount  <br />  <br /></td>\n<td>array of objects  <br />  <br />  <br />  <br />string  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />object  <br />  <br />  <br />  <br />string  <br />  <br />  <br />  <br />  <br />  <br />integer  <br />  <br />  <br />  <br />string  <br />  <br />  <br />integer  <br />  <br />  <br />integer</td>\n<td>List of custom attributes.  <br />  <br />  <br />Date and time of creation. Has the following format: yyyy-MM-dd'T'HH:mm:ss  <br />  <br />Enum: \"STRING\" \"DECIMAL\" \"INTEGER\" \"BOOLEAN\" \"DATE\" \"DATE_TIME\" \"LIST_OF_OBJECTS\"  <br />Custom attribute type.  <br />  <br />Date and time of last modification. Has the following format: yyyy-MM-dd'T'HH:mm:ss.  <br />  <br />  <br />Custom attribute name, 256 characters max. Invalid characters: {}[].  <br />  <br />  <br />  <br />  <br />  <br />Enum: \"STRING\" \"DECIMAL\" \"INTEGER\" \"BOOLEAN\" \"DATE\" \"DATE_TIME\" \"LIST_OF_OBJECTS\"  <br />  <br />  <br />  <br />Limit how many rows will be returned (but possibly less, if the query itself yields fewer rows)  <br />  <br />  <br />Results ordering.  <br />  <br />  <br />Page number  <br />  <br />  <br />Total amount of rows</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-responses\">Error responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>requestError</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>serviceException</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>Identifier of the error</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Detailed error description.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["people","2","customAttributes"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"c61bc642-a92b-439d-aafb-b52b2f45ce18","name":"Get a list of custom attributes","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":""},"url":"https://go2.vhdmedia.se/people/2/customAttributes"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"671"},{"key":"Date","value":"Mon, 08 May 2023 15:10:58 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1683558659731416666"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"limit\": 100,\n    \"page\": 1,\n    \"orderBy\": \"name:asc, id:asc\",\n    \"customAttributes\": [\n        {\n            \"createdAt\": \"2023-05-08T14:38:41\",\n            \"modifiedAt\": \"2023-05-08T14:38:41\",\n            \"name\": \"Company\",\n            \"dataType\": \"STRING\"\n        },\n        {\n            \"createdAt\": \"2023-05-08T15:00:54\",\n            \"modifiedAt\": \"2023-05-08T15:00:54\",\n            \"name\": \"Contract Expiry\",\n            \"dataType\": \"DATE\"\n        },\n    \n        {\n            \"createdAt\": \"2023-05-08T14:09:08\",\n            \"modifiedAt\": \"2023-05-08T14:09:08\",\n            \"name\": \"ShoppingCartList\",\n            \"dataType\": \"LIST_OF_OBJECTS\",\n            \"objectSchema\": {\n                \"__id\": \"STRING\",\n                \"productName\": \"STRING\",\n                \"productImage\": \"STRING\",\n                \"productPrice\": \"DECIMAL\",\n                \"productCategory\": \"STRING\"\n            }\n        }\n    ]\n}"}],"_postman_id":"9b66aa49-357b-448e-993c-aba3e0ceb0b4"},{"name":"Get a single custom attribute","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","pm.test(\"Response contains the documented fields\", function () {","    [\"name\"].forEach(function (key) {","        pm.expect(responseBody, 'missing field ' + key).to.have.property(key);","    });","});"],"type":"text/javascript","packages":{}}}],"id":"501d3f4f-bed8-4ff6-8fbc-4d9d6214c767","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[],"url":"https://go2.vhdmedia.se/people/2/customAttributes/ShoppingCartList","description":"<p>Get a single custom attribute using this method.</p>\n<h3 id=\"request-rate-limit\">Request rate limit</h3>\n<p>5 requests / second (per account)</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>Required  <br />  <br />Example: Attribute  <br />Name of the attribute you want to delete.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-responses\">Error responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>requestError</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>serviceException</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>Identifier of the error</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Detailed error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-response-fields\">Additional response fields</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>createdAt</em></td>\n<td>String</td>\n<td>Date and time of creation. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td><em>dataType</em></td>\n<td></td>\n<td>Custom attribute type.</td>\n</tr>\n<tr>\n<td><em>modifiedAt</em></td>\n<td>String</td>\n<td>Date and time of last modification. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td><em>objectSchema</em></td>\n<td>Object</td>\n<td>Object schema for <code>LIST_OF_OBJECTS</code> type. Defines the shape of the list items.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["people","2","customAttributes","ShoppingCartList"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"c10e6447-d95e-47e0-9e20-4c6d6fdec160","name":"Get a single custom attribute","originalRequest":{"method":"GET","header":[],"url":"https://go2.vhdmedia.se/people/2/customAttributes/{{name}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"118"},{"key":"Date","value":"Sat, 20 May 2023 09:30:06 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684575006706644836"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"{\n    \"createdAt\": \"2023-05-20T09:29:53\",\n    \"modifiedAt\": \"2023-05-20T09:29:53\",\n    \"name\": \"Contract Expiry Date\",\n    \"dataType\": \"DATE\"\n}"}],"_postman_id":"501d3f4f-bed8-4ff6-8fbc-4d9d6214c767"},{"name":"Append item to custom attribute","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an array\", function () {","    pm.expect(responseBody).to.be.an('array');","});"],"type":"text/javascript","packages":{}}}],"id":"6f6452e7-cc4a-4b1e-b444-74894679557b","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"productName\": \"Cap\",\n  \"productPrice\": 11.33,\n  \"productCategory\": \"Hats\",\n  \"productImage\": \"/image3.png\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/customAttributes/ShoppingCartList/append?identifier=janewilliams@example.com&type=EMAIL","description":"<p>Custom attributes with <code>LIST_OF_OBJECTS</code> type contain an array of items as a value. Using this API method, you can add a new item to the specified list type custom attribute of a specific person. The item you want to add should match the defined list schema.</p>\n<h3 id=\"request-rate-limit\">Request rate limit</h3>\n<p>5 requests / second (per account)</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>Required  <br />  <br />Example: Attribute  <br />Name of the attribute you want to delete.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"query-parameters\">Query parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>phone</em></td>\n<td>string</td>\n<td>Example: phone=46701234567  <br />Person’s phone number. Phone numbers must be in international format.</td>\n</tr>\n<tr>\n<td>email</td>\n<td>string</td>\n<td>Example: email=<a href=\"mailto:name@example.com\">name@example.com</a>  <br />Person’s email address. Must comply with the email format and cannot exceed 255 characters. One person can have up to 100 email addresses.</td>\n</tr>\n<tr>\n<td>externalId</td>\n<td>string</td>\n<td>Example: externalId=6F9619FF-8B86-D011-B42D-00CF4FC964FF  <br />Unique ID for a person from your or another external system.</td>\n</tr>\n<tr>\n<td>pushRegistrationId</td>\n<td>string</td>\n<td>Example: pushRegistrationId=6F9619FF-8B86-D011-B42D-00CF4FC964FF  <br />Person's push registration ID.</td>\n</tr>\n<tr>\n<td>id</td>\n<td>ineger</td>\n<td>Example: id=11351351  <br />Person's internal ID.</td>\n</tr>\n<tr>\n<td>lineId</td>\n<td>string</td>\n<td>Example: lineId=U045147f1ad961bfe996b72bbf417f3c9  <br />Person’s Line ID. To get person by Line OTT channel, you need to specify both lineId and lineSenderId parameters.</td>\n</tr>\n<tr>\n<td>lineSenderId</td>\n<td>string</td>\n<td>Example: lineSenderId=1644264921  <br />Person’s Line sender ID. To get person by Line OTT channel, you need to specify both lineId and lineSenderId parameter</td>\n</tr>\n<tr>\n<td>facebookId</td>\n<td>string</td>\n<td>Example: facebookId=370329180020364  <br />Person’s Facebook ID. To get person by Facebook OTT channel, you need to specify both facebookId and facebookSenderId parameters.</td>\n</tr>\n<tr>\n<td>facebookSenderId</td>\n<td>integer</td>\n<td>Example: facebookSenderId=2094832040560427  <br />Person’s Facebook sender ID. To get person by Facebook OTT channel, you need to specify both facebookId and facebookSenderId parameters.</td>\n</tr>\n<tr>\n<td>telegramUserId</td>\n<td>string</td>\n<td>Example: telegramUserId=1303201999  <br />Person’s Telegram user ID. To get person by Telegram OTT channel, you need to specify both telegramUserId and telegramBotId parameters.</td>\n</tr>\n<tr>\n<td>telegramBotId</td>\n<td>string</td>\n<td>Example: telegramBotId=1495032701  <br />Person’s Telegram bot ID. To get person by Telegram OTT channel, you need to specify both telegramUserId and telegramBotId parameters.</td>\n</tr>\n<tr>\n<td>viberBotUserId</td>\n<td>string</td>\n<td>Example: viberBotUserId=Upk26V/i1GXfvxZ8S41P/w==  <br />Person’s Viber Bot user ID. To get person by Viber Bot OTT channel, you need to specify both viberBotUserId and viberBotId parameters.</td>\n</tr>\n<tr>\n<td>viberBotId</td>\n<td><br />integer</td>\n<td>Example: viberBotId=5591458813882487336  <br />Person’s Viber Bot ID. To get person by Viber Bot OTT channel, you need to specify both viberBotUserId and viberBotId parameters.</td>\n</tr>\n<tr>\n<td>instagramId</td>\n<td>string</td>\n<td>Example: instagramId=17841546155331428  <br />Person’s Instagram user ID. To get person by Instagram channel, you need to specify both instagramId and instagramSenderId parameters.</td>\n</tr>\n<tr>\n<td>instagramSenderId</td>\n<td>integer</td>\n<td>Example: instagramSenderId=17841405793187218  <br />Person’s Instagram sender ID. To get person by Instagram channel, you need to specify both instagramId and instagramSenderId parameters.</td>\n</tr>\n<tr>\n<td>twitterId</td>\n<td>string</td>\n<td>example: twitterId=370329180020364  <br />Person’s Twitter user ID. To get person by Twitter channel, you need to specify both twitterId and twitterSenderId parameters.</td>\n</tr>\n<tr>\n<td>twitterSenderId</td>\n<td>integer</td>\n<td>Example: twitterSenderId=10765432100123456789  <br />Person’s Twitter sender ID. To get person by Twitter channel, you need to specify both twitterId and twitterSenderId parameters.</td>\n</tr>\n<tr>\n<td>appleBusinessChatId</td>\n<td>string</td>\n<td>Example: appleBusinessChatId=ef6ca8e9-3718-4dc9-a9a0-b4ac28d135ca  <br />Person’s Apple Business Chat ID. To get person by Apple BC channel, you need to specify both appleBusinessChatId and appleBusinessChatSenderId parameters.</td>\n</tr>\n<tr>\n<td>appleBusinessChatSenderId</td>\n<td>string</td>\n<td>Example: appleBusinessChatSenderId=urn:mbid:AQAAYyUbut3B2E3T9GLv4EaF/  <br />Person’s Apple Business Chat sender ID. To get person by Apple BC channel, you need to specify both appleBusinessChatId and appleBusinessChatSenderId parameters.</td>\n</tr>\n<tr>\n<td>liveChatRegId</td>\n<td>string</td>\n<td>Example: liveChatRegId=79f9701b-e350-4497-9689-b2257864e63f</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"additional-parameters\">Additional parameters</h3>\n<p>These fields are also supported.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>identifier</em></td>\n<td>String</td>\n<td>Person ID. ID type must match the <code>type</code> parameter. Some channels (e,g., Apple Business Chat) use identifiers that contain unsafe characters. Make sure you URL-encode them in your API request</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["people","2","customAttributes","ShoppingCartList","append"],"host":["go2","vhdmedia","se"],"query":[{"key":"identifier","value":"janewilliams@example.com"},{"key":"type","value":"EMAIL"}],"variable":[]}},"response":[{"id":"f1f8501b-650b-4274-8fcd-92ff9592256b","name":"Append item to custom attribute","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n\"productName\": \"Cap\",\n\"productPrice\": 11.33,\n\"productCategory\": \"Hats\",\n\"productImage\": \"/image3.png\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/2/customAttributes/{{name}}/append?email=janewilliams@vhdmeida.com","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","2","customAttributes","{{name}}","append"],"query":[{"key":"email","value":"janewilliams@vhdmeida.com"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"451"},{"key":"Date","value":"Mon, 22 May 2023 14:05:48 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1684764348099376162"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"__id\": \"6fc50081-3832-4630-8d5e-c2d2b3e581ac\",\n        \"productCategory\": \"Sport Sneakers\",\n        \"productImage\": \"/image1.png\",\n        \"productName\": \"Sneakers\",\n        \"productPrice\": 20.33\n    },\n    {\n        \"__id\": \"f03121ae-5485-40e1-9849-cf1dfaedfb6e\",\n        \"productCategory\": \"Casual\",\n        \"productImage\": \"/image2.png\",\n        \"productName\": \"T-Shirt\",\n        \"productPrice\": 10.99\n    },\n    {\n        \"__id\": \"f6010d0b-f5d1-4d69-9b6e-c081dac98b86\",\n        \"productCategory\": \"Hats\",\n        \"productImage\": \"/image3.png\",\n        \"productName\": \"Cap\",\n        \"productPrice\": 11.33\n    }\n]"}],"_postman_id":"6f6452e7-cc4a-4b1e-b444-74894679557b"},{"name":"Delete a custom attribute","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 204\", function () {","    pm.expect(pm.response.code).to.be.oneOf([204]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});"],"type":"text/javascript","packages":{}}}],"id":"b68f59a6-a8ca-4c12-9429-9081d50df5fc","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"DELETE","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/2/customAttributes/ContractExpiry","description":"<p>Use this method to delete the custom attribute.</p>\n<h3 id=\"request-rate-limit\">Request rate limit</h3>\n<p>5 requests / second (per account)</p>\n<h3 id=\"path-parameters\">Path parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>name</td>\n<td>string</td>\n<td>Required  <br />  <br />Example: Attribute  <br />Name of the attribute you want to delete.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-responses\">Error responses</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>requestError</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>serviceException</td>\n<td>object</td>\n<td></td>\n</tr>\n<tr>\n<td>messageId</td>\n<td>string</td>\n<td>Identifier of the error</td>\n</tr>\n<tr>\n<td>text</td>\n<td>string</td>\n<td>Detailed error description.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["people","2","customAttributes","ContractExpiry"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"f0007e14-a44c-4336-bdf1-8293b1cccdbf","name":"Delete a custom attribute","originalRequest":{"method":"DELETE","header":[],"url":"https://go2.vhdmedia.se/people/2/customAttributes/Contract Expiry Date"},"status":"No Content","code":204,"_postman_previewlanguage":"json","header":[{"key":"Vary","value":"Origin"},{"key":"Vary","value":"Access-Control-Request-Method"},{"key":"Vary","value":"Access-Control-Request-Headers"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE"},{"key":"Access-Control-Allow-Headers","value":"Authorization, Content-Type, X-Enrollment-Token, Cache-Control, X-Requested-With"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Date","value":"Mon, 08 May 2023 15:03:27 GMT"},{"key":"Server","value":"SMS API"},{"key":"X-Request-Id","value":"1683558207797660836"},{"key":"connection","value":"close"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubDomains; preload;"}],"cookie":[],"responseTime":null,"body":null}],"_postman_id":"b68f59a6-a8ca-4c12-9429-9081d50df5fc"}],"id":"1c0127c7-053f-4272-bc2f-c1d3367efb3b","_postman_id":"1c0127c7-053f-4272-bc2f-c1d3367efb3b","description":""},{"name":"PERSON LISTS (API v3)","item":[{"name":"Replace a list","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an array\", function () {","    pm.expect(responseBody).to.be.an('array');","});","","var r = pm.response.json();","pm.environment.set(\"itemId\", r[0].__id);","pm.environment.set(\"itemIds\", r[0].__id + \",\" + r[1].__id);","pm.environment.set(\"itemLastId\", r[1].__id);"],"type":"text/javascript","packages":{}}}],"id":"a764a22f-084e-423d-9354-f2232dd22afc","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"[\n  {\n    \"productName\": \"Sneakers\",\n    \"productPrice\": 25.33,\n    \"productCategory\": \"Sport\",\n    \"productImage\": \"/image.png\"\n  },\n  {\n    \"productName\": \"T-Shirt\",\n    \"productPrice\": 9.99,\n    \"productCategory\": \"Sport\",\n    \"productImage\": \"/image.png\"\n  }\n]","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/3/lists/ShoppingCartList?type=EMAIL&identifier=janewilliams@example.com","description":"<p>Replace a list.</p>\n<p>Replaces all items in a list attribute and returns all items of the updated list.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>listName</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Name of the list attribute.</td>\n</tr>\n<tr>\n<td><em>type</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Type of the person ID. Can be one of the above. One of: <code>ID</code>, <code>EXTERNAL_ID</code>, <code>PHONE</code>, <code>EMAIL</code>, <code>LINE</code>, <code>FACEBOOK</code>, <code>TELEGRAM</code>, <code>PUSH</code>, <code>LIVE_CHAT</code>, <code>VIBER_BOTS</code>, <code>INSTAGRAM</code>, <code>INSTAGRAM_DM</code>, <code>TWITTER</code>, <code>APPLE_BUSINESS_CHAT</code>, <code>KAKAO_SANGDAM</code>, <code>OPEN_CHANNEL</code>, <code>ZALO_FOLLOWER</code>, <code>TIKTOK_BM</code>, <code>WHATSAPP</code>, <code>KAKAO_TALK</code>.</td>\n</tr>\n<tr>\n<td><em>identifier</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Person ID. ID type must match the <code>type</code> parameter.</td>\n</tr>\n<tr>\n<td><em>sender</em></td>\n<td>String</td>\n<td>Sender or application ID.<code>sender</code> is required for all identifier types except <code>ID</code>, <code>EXTERNAL_ID</code>, <code>PHONE</code>, <code>EMAIL</code></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["people","3","lists","ShoppingCartList"],"host":["go2","vhdmedia","se"],"query":[{"key":"type","value":"EMAIL"},{"key":"identifier","value":"janewilliams@example.com"}],"variable":[]}},"response":[{"id":"9256bc9f-5c1f-4539-a6fa-4f47ff7e3ba6","name":"200 - Response example","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"[\n  {\n    \"item_field_#1\": \"some value\",\n    \"item_field_#2\": 42\n  },\n  {\n    \"item_field_#1\": \"some value\"\n  }\n]","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}?type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"__id\": \"78f47a5a-b9c4-4802-8bed-e81cf5fde0b4\",\n    \"item_field_#1\": \"some value\"\n  },\n  {\n    \"__id\": \"b606345f-f7a6-4b9d-b9f1-75bdeaf0e55f\",\n    \"item_field_#1\": \"some value\",\n    \"item_field_#2\": 42\n  }\n]"},{"id":"0de625aa-fdbe-4119-8242-0633b23a4368","name":"400 - real VHD response","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"[\n  {\n    \"item_field_#1\": \"some value\",\n    \"item_field_#2\": 42\n  },\n  {\n    \"item_field_#1\": \"some value\"\n  }\n]","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}?type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"message\": \"Invalid body\"\n}"},{"id":"82164090-7895-4b9a-8f40-b284f69837de","name":"401 - Example","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"[\n  {\n    \"item_field_#1\": \"some value\",\n    \"item_field_#2\": 42\n  },\n  {\n    \"item_field_#1\": \"some value\"\n  }\n]","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}?type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"590727fc-1572-4be5-82e2-7e3d9dbb4722","name":"403 - Example","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"[\n  {\n    \"item_field_#1\": \"some value\",\n    \"item_field_#2\": 42\n  },\n  {\n    \"item_field_#1\": \"some value\"\n  }\n]","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}?type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"c00868ec-6976-454d-87a5-1b9fd64d6eee","name":"404 - person doesn't exist","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"[\n  {\n    \"item_field_#1\": \"some value\",\n    \"item_field_#2\": 42\n  },\n  {\n    \"item_field_#1\": \"some value\"\n  }\n]","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}?type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": 300101,\n  \"message\": \"Person with ID 'test@gmail.com' does not exist\"\n}"},{"id":"f2034523-37e9-4725-a870-bbc20e5883d5","name":"429 - Example","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"[\n  {\n    \"item_field_#1\": \"some value\",\n    \"item_field_#2\": 42\n  },\n  {\n    \"item_field_#1\": \"some value\"\n  }\n]","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}?type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"68b7d225-76bf-4a10-9fc1-ae9ab76c8f5e","name":"500 - Example","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"[\n  {\n    \"item_field_#1\": \"some value\",\n    \"item_field_#2\": 42\n  },\n  {\n    \"item_field_#1\": \"some value\"\n  }\n]","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}?type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"a764a22f-084e-423d-9354-f2232dd22afc"},{"name":"Get lists","event":[{"listen":"test","script":{"exec":["// Tests for Get lists.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var res;","pm.test(\"Response body is valid JSON\", function () { res = pm.response.json(); });","","pm.test(\"Response is an object with one array of items per requested list\", function () {","    pm.expect(res).to.be.an('object');","    Object.keys(res).forEach(function (listName) {","        pm.expect(res[listName], 'list ' + listName).to.be.an('array');","    });","});",""],"type":"text/javascript","packages":{}}}],"id":"2464a2c6-ee29-4879-84a3-33fe20b2428a","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/people/3/lists?listNames=ShoppingCartList&type=EMAIL&identifier=janewilliams@example.com","description":"<p>Get lists.</p>\n<p>Returns all items of a single or multiple list attributes.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>listNames</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> Names of list attributes to return, separated by commas (,).</td>\n</tr>\n<tr>\n<td><em>type</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Type of the person ID. Can be one of the above. One of: <code>ID</code>, <code>EXTERNAL_ID</code>, <code>PHONE</code>, <code>EMAIL</code>, <code>LINE</code>, <code>FACEBOOK</code>, <code>TELEGRAM</code>, <code>PUSH</code>, <code>LIVE_CHAT</code>, <code>VIBER_BOTS</code>, <code>INSTAGRAM</code>, <code>INSTAGRAM_DM</code>, <code>TWITTER</code>, <code>APPLE_BUSINESS_CHAT</code>, <code>KAKAO_SANGDAM</code>, <code>OPEN_CHANNEL</code>, <code>ZALO_FOLLOWER</code>, <code>TIKTOK_BM</code>, <code>WHATSAPP</code>, <code>KAKAO_TALK</code>.</td>\n</tr>\n<tr>\n<td><em>identifier</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Person ID. ID type must match the <code>type</code> parameter.</td>\n</tr>\n<tr>\n<td><em>sender</em></td>\n<td>String</td>\n<td>Sender or application ID.<code>sender</code> is required for all identifier types except <code>ID</code>, <code>EXTERNAL_ID</code>, <code>PHONE</code>, <code>EMAIL</code></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["people","3","lists"],"host":["go2","vhdmedia","se"],"query":[{"key":"listNames","value":"ShoppingCartList"},{"key":"type","value":"EMAIL"},{"key":"identifier","value":"janewilliams@example.com"}],"variable":[]}},"response":[{"id":"84701f1a-f4d3-4f27-9af4-7a18467e28e0","name":"200 - Response example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/lists?listNames={{listName}}&type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists"],"query":[{"key":"listNames","value":"{{listName}}","description":"Names of list attributes to return, separated by commas (,)."},{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"my list\": [\n    {\n      \"__id\": \"78f47a5a-b9c4-4802-8bed-e81cf5fde0b4\",\n      \"item_field_#1\": \"some value\"\n    },\n    {\n      \"__id\": \"b606345f-f7a6-4b9d-b9f1-75bdeaf0e55f\",\n      \"item_field_#1\": \"some value\",\n      \"item_field_#2\": 42\n    }\n  ]\n}"},{"id":"a72ef323-f878-4deb-b20b-da837d6cd3e1","name":"400 - identifier is not provided","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/lists?listNames={{listName}}&type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists"],"query":[{"key":"listNames","value":"{{listName}}","description":"Names of list attributes to return, separated by commas (,)."},{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": 400116,\n  \"message\": \"Missing parameter: identifier\"\n}"},{"id":"cdb6661b-4f68-4f6c-9313-9879e798b371","name":"401 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/lists?listNames={{listName}}&type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists"],"query":[{"key":"listNames","value":"{{listName}}","description":"Names of list attributes to return, separated by commas (,)."},{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"ff5ede65-1655-4f38-be5e-b5b44f1af4fc","name":"403 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/lists?listNames={{listName}}&type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists"],"query":[{"key":"listNames","value":"{{listName}}","description":"Names of list attributes to return, separated by commas (,)."},{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"50d85e74-8a25-4736-94d0-7fedea36f377","name":"404 - real VHD response","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/lists?listNames={{listName}}&type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists"],"query":[{"key":"listNames","value":"{{listName}}","description":"Names of list attributes to return, separated by commas (,)."},{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": 300101,\n  \"message\": \"Person with ID 'jane.smith@vhdmedia.se' does not exist\"\n}"},{"id":"c8aead34-216a-4e08-a464-445a45d1daf4","name":"429 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/lists?listNames={{listName}}&type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists"],"query":[{"key":"listNames","value":"{{listName}}","description":"Names of list attributes to return, separated by commas (,)."},{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"a8756f89-20f3-4b04-b1c7-8ebc7a3e8325","name":"500 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/lists?listNames={{listName}}&type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists"],"query":[{"key":"listNames","value":"{{listName}}","description":"Names of list attributes to return, separated by commas (,)."},{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"2464a2c6-ee29-4879-84a3-33fe20b2428a"},{"name":"Append items","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an array\", function () {","    pm.expect(responseBody).to.be.an('array');","});"],"type":"text/javascript","packages":{}}}],"id":"7496ca62-930a-4d27-b7ad-4299084c4921","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"[\n  {\n    \"productName\": \"Cap\",\n    \"productPrice\": 11.33,\n    \"productCategory\": \"Sport\",\n    \"productImage\": \"/image.png\"\n  }\n]","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/3/lists/ShoppingCartList/items?type=EMAIL&identifier=janewilliams@example.com","description":"<p>Append items.</p>\n<p>Adds new items to a list attribute and returns all items of the updated list.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>listName</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Name of the list attribute.</td>\n</tr>\n<tr>\n<td><em>type</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Type of the person ID. Can be one of the above. One of: <code>ID</code>, <code>EXTERNAL_ID</code>, <code>PHONE</code>, <code>EMAIL</code>, <code>LINE</code>, <code>FACEBOOK</code>, <code>TELEGRAM</code>, <code>PUSH</code>, <code>LIVE_CHAT</code>, <code>VIBER_BOTS</code>, <code>INSTAGRAM</code>, <code>INSTAGRAM_DM</code>, <code>TWITTER</code>, <code>APPLE_BUSINESS_CHAT</code>, <code>KAKAO_SANGDAM</code>, <code>OPEN_CHANNEL</code>, <code>ZALO_FOLLOWER</code>, <code>TIKTOK_BM</code>, <code>WHATSAPP</code>, <code>KAKAO_TALK</code>.</td>\n</tr>\n<tr>\n<td><em>identifier</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Person ID. ID type must match the <code>type</code> parameter.</td>\n</tr>\n<tr>\n<td><em>sender</em></td>\n<td>String</td>\n<td>Sender or application ID.<code>sender</code> is required for all identifier types except <code>ID</code>, <code>EXTERNAL_ID</code>, <code>PHONE</code>, <code>EMAIL</code></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["people","3","lists","ShoppingCartList","items"],"host":["go2","vhdmedia","se"],"query":[{"key":"type","value":"EMAIL"},{"key":"identifier","value":"janewilliams@example.com"}],"variable":[]}},"response":[{"id":"131c37d8-db3b-4fd8-8dff-78c745972ec4","name":"200 - Response example","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"[\n  {\n    \"item_field_#1\": \"some value\",\n    \"item_field_#2\": 42\n  }\n]","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}/items?type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}","items"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"__id\": \"78f47a5a-b9c4-4802-8bed-e81cf5fde0b4\",\n    \"item_field_#1\": \"some value\"\n  },\n  {\n    \"__id\": \"b606345f-f7a6-4b9d-b9f1-75bdeaf0e55f\",\n    \"item_field_#1\": \"some value\",\n    \"item_field_#2\": 42\n  }\n]"},{"id":"4702def3-517d-46b2-ba26-a20f28d8b17b","name":"400 - real VHD response","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"[\n  {\n    \"item_field_#1\": \"some value\",\n    \"item_field_#2\": 42\n  }\n]","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}/items?type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}","items"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"message\": \"Invalid body\"\n}"},{"id":"c70c315f-a28e-42dd-9369-5c9300d0bc94","name":"401 - Example","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"[\n  {\n    \"item_field_#1\": \"some value\",\n    \"item_field_#2\": 42\n  }\n]","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}/items?type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}","items"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"e2734989-f208-4a31-8888-b92db064c2af","name":"403 - Example","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"[\n  {\n    \"item_field_#1\": \"some value\",\n    \"item_field_#2\": 42\n  }\n]","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}/items?type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}","items"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"4e4e5082-073a-4eba-9128-c4b4cd17ab59","name":"404 - person doesn't exist","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"[\n  {\n    \"item_field_#1\": \"some value\",\n    \"item_field_#2\": 42\n  }\n]","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}/items?type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}","items"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": 300101,\n  \"message\": \"Person with ID 'test@gmail.com' does not exist\"\n}"},{"id":"6c941810-6e7d-4c40-9263-e94295aabe09","name":"429 - Example","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"[\n  {\n    \"item_field_#1\": \"some value\",\n    \"item_field_#2\": 42\n  }\n]","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}/items?type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}","items"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"481e2834-29c7-4828-b807-65688025cdf9","name":"500 - Example","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"[\n  {\n    \"item_field_#1\": \"some value\",\n    \"item_field_#2\": 42\n  }\n]","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}/items?type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}","items"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"7496ca62-930a-4d27-b7ad-4299084c4921"},{"name":"Get items","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an array\", function () {","    pm.expect(responseBody).to.be.an('array');","});"],"type":"text/javascript","packages":{}}}],"id":"9e938d0e-f7e4-48b1-9411-c50e53ef3d29","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/people/3/lists/ShoppingCartList/items?type=EMAIL&identifier=janewilliams@example.com&itemIds={{itemIds}}","description":"<p>Get items.</p>\n<p>Get a single item or a list of items of a list attribute.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>listName</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Name of the list attribute.</td>\n</tr>\n<tr>\n<td><em>type</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Type of the person ID. Can be one of the above. One of: <code>ID</code>, <code>EXTERNAL_ID</code>, <code>PHONE</code>, <code>EMAIL</code>, <code>LINE</code>, <code>FACEBOOK</code>, <code>TELEGRAM</code>, <code>PUSH</code>, <code>LIVE_CHAT</code>, <code>VIBER_BOTS</code>, <code>INSTAGRAM</code>, <code>INSTAGRAM_DM</code>, <code>TWITTER</code>, <code>APPLE_BUSINESS_CHAT</code>, <code>KAKAO_SANGDAM</code>, <code>OPEN_CHANNEL</code>, <code>ZALO_FOLLOWER</code>, <code>TIKTOK_BM</code>, <code>WHATSAPP</code>, <code>KAKAO_TALK</code>.</td>\n</tr>\n<tr>\n<td><em>identifier</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Person ID. ID type must match the <code>type</code> parameter.</td>\n</tr>\n<tr>\n<td><em>sender</em></td>\n<td>String</td>\n<td>Sender or application ID.<code>sender</code> is required for all identifier types except <code>ID</code>, <code>EXTERNAL_ID</code>, <code>PHONE</code>, <code>EMAIL</code></td>\n</tr>\n<tr>\n<td><em>itemIds</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> UUIDs of list items to return, separated by commas (,).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["people","3","lists","ShoppingCartList","items"],"host":["go2","vhdmedia","se"],"query":[{"key":"type","value":"EMAIL"},{"key":"identifier","value":"janewilliams@example.com"},{"key":"itemIds","value":"{{itemIds}}"}],"variable":[]}},"response":[{"id":"7f56dbd5-2915-48b2-a1cf-60e6a5af1574","name":"200 - Response example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}/items?type={{personIdentifierType}}&identifier={{personId}}&itemIds={{itemIds}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}","items"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true},{"key":"itemIds","value":"{{itemIds}}","description":"UUIDs of list items to return, separated by commas (,)."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"__id\": \"78f47a5a-b9c4-4802-8bed-e81cf5fde0b4\",\n    \"item_field_#1\": \"some value\"\n  },\n  {\n    \"__id\": \"b606345f-f7a6-4b9d-b9f1-75bdeaf0e55f\",\n    \"item_field_#1\": \"some value\",\n    \"item_field_#2\": 42\n  }\n]"},{"id":"4d57ff95-2588-4b4f-96ef-5c8106ce6332","name":"400 - identifier is not provided","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}/items?type={{personIdentifierType}}&identifier={{personId}}&itemIds={{itemIds}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}","items"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true},{"key":"itemIds","value":"{{itemIds}}","description":"UUIDs of list items to return, separated by commas (,)."}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": 400116,\n  \"message\": \"Missing parameter: identifier\"\n}"},{"id":"fad94c5a-7032-491b-b900-1fbeb0d818c7","name":"401 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}/items?type={{personIdentifierType}}&identifier={{personId}}&itemIds={{itemIds}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}","items"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true},{"key":"itemIds","value":"{{itemIds}}","description":"UUIDs of list items to return, separated by commas (,)."}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"41a2fa64-ff34-4b39-a38d-4c9c5cb266f2","name":"403 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}/items?type={{personIdentifierType}}&identifier={{personId}}&itemIds={{itemIds}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}","items"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true},{"key":"itemIds","value":"{{itemIds}}","description":"UUIDs of list items to return, separated by commas (,)."}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"7f37625a-393c-446b-86e4-beef77a890e6","name":"404 - real VHD response","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}/items?type={{personIdentifierType}}&identifier={{personId}}&itemIds={{itemIds}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}","items"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true},{"key":"itemIds","value":"{{itemIds}}","description":"UUIDs of list items to return, separated by commas (,)."}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": 300101,\n  \"message\": \"Person with ID 'jane.smith@vhdmedia.se' does not exist\"\n}"},{"id":"651af559-4f6d-4263-8998-55bb4ace4fe2","name":"429 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}/items?type={{personIdentifierType}}&identifier={{personId}}&itemIds={{itemIds}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}","items"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true},{"key":"itemIds","value":"{{itemIds}}","description":"UUIDs of list items to return, separated by commas (,)."}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"7e732335-7fcc-4d63-9432-24d21d4c79d3","name":"500 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}/items?type={{personIdentifierType}}&identifier={{personId}}&itemIds={{itemIds}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}","items"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true},{"key":"itemIds","value":"{{itemIds}}","description":"UUIDs of list items to return, separated by commas (,)."}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"9e938d0e-f7e4-48b1-9411-c50e53ef3d29"},{"name":"Update an item","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an array\", function () {","    pm.expect(responseBody).to.be.an('array');","});"],"type":"text/javascript","packages":{}}}],"id":"c84a80fb-0b5a-40e0-88b6-7045943cab3f","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"PATCH","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"productName\": \"Sneakers (patched)\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/3/lists/ShoppingCartList/items/{{itemId}}?type=EMAIL&identifier=janewilliams@example.com","description":"<p>Update an item.</p>\n<p>Updates the fields of a list item that are passed in the request. Missing fields will keep their values. Returns all items of the updated list attribute.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>listName</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Name of the list attribute.</td>\n</tr>\n<tr>\n<td><em>itemId</em></td>\n<td>String</td>\n<td><strong>Required.</strong> UUID of the list item to update.</td>\n</tr>\n<tr>\n<td><em>type</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Type of the person ID. Can be one of the above. One of: <code>ID</code>, <code>EXTERNAL_ID</code>, <code>PHONE</code>, <code>EMAIL</code>, <code>LINE</code>, <code>FACEBOOK</code>, <code>TELEGRAM</code>, <code>PUSH</code>, <code>LIVE_CHAT</code>, <code>VIBER_BOTS</code>, <code>INSTAGRAM</code>, <code>INSTAGRAM_DM</code>, <code>TWITTER</code>, <code>APPLE_BUSINESS_CHAT</code>, <code>KAKAO_SANGDAM</code>, <code>OPEN_CHANNEL</code>, <code>ZALO_FOLLOWER</code>, <code>TIKTOK_BM</code>, <code>WHATSAPP</code>, <code>KAKAO_TALK</code>.</td>\n</tr>\n<tr>\n<td><em>identifier</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Person ID. ID type must match the <code>type</code> parameter.</td>\n</tr>\n<tr>\n<td><em>sender</em></td>\n<td>String</td>\n<td>Sender or application ID.<code>sender</code> is required for all identifier types except <code>ID</code>, <code>EXTERNAL_ID</code>, <code>PHONE</code>, <code>EMAIL</code></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["people","3","lists","ShoppingCartList","items","{{itemId}}"],"host":["go2","vhdmedia","se"],"query":[{"key":"type","value":"EMAIL"},{"key":"identifier","value":"janewilliams@example.com"}],"variable":[]}},"response":[{"id":"f9a4cf0d-1985-492f-bd37-d0943fc8445c","name":"200 - Response example","originalRequest":{"method":"PATCH","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"item_field_#1\": \"new field value\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}/items/{{itemId}}?type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}","items","{{itemId}}"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"__id\": \"78f47a5a-b9c4-4802-8bed-e81cf5fde0b4\",\n    \"item_field_#1\": \"new field value\"\n  },\n  {\n    \"__id\": \"b606345f-f7a6-4b9d-b9f1-75bdeaf0e55f\",\n    \"item_field_#1\": \"some value\",\n    \"item_field_#2\": 42\n  }\n]"},{"id":"c1720316-f37e-4433-86d8-29c249d40108","name":"400 - real VHD response","originalRequest":{"method":"PATCH","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"item_field_#1\": \"new field value\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}/items/{{itemId}}?type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}","items","{{itemId}}"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": 400101,\n  \"message\": \"Validation errors: property itemBody - size must be between 1 and 128\"\n}"},{"id":"6038a2d5-d379-4459-881c-0a45fd6e7695","name":"401 - Example","originalRequest":{"method":"PATCH","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"item_field_#1\": \"new field value\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}/items/{{itemId}}?type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}","items","{{itemId}}"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"bd2bc927-a1c4-4352-b06d-64faa241c6f3","name":"403 - Example","originalRequest":{"method":"PATCH","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"item_field_#1\": \"new field value\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}/items/{{itemId}}?type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}","items","{{itemId}}"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"20aa85f7-22c0-4f1f-b607-c6aa3d7698d6","name":"404 - person doesn't exist","originalRequest":{"method":"PATCH","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"item_field_#1\": \"new field value\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}/items/{{itemId}}?type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}","items","{{itemId}}"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": 300101,\n  \"message\": \"Person with ID 'test@gmail.com' does not exist\"\n}"},{"id":"6725afc2-44c9-46b5-b6f8-99187f23da88","name":"429 - Example","originalRequest":{"method":"PATCH","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"item_field_#1\": \"new field value\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}/items/{{itemId}}?type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}","items","{{itemId}}"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"e5d0a010-56e2-4e7b-9c67-09f5a9cc6c42","name":"500 - Example","originalRequest":{"method":"PATCH","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"item_field_#1\": \"new field value\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}/items/{{itemId}}?type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}","items","{{itemId}}"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"c84a80fb-0b5a-40e0-88b6-7045943cab3f"},{"name":"Replace an item","event":[{"listen":"test","script":{"exec":["// Tests for Replace an item.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var res;","pm.test(\"Response body is valid JSON\", function () { res = pm.response.json(); });","","pm.test(\"Response is the updated list (an array of items)\", function () {","    pm.expect(res).to.be.an('array');","    res.forEach(function (item) { pm.expect(item).to.have.property('__id'); });","});",""],"type":"text/javascript","packages":{}}}],"id":"a5da7a0d-4fc5-4665-a2c5-832d1272c8dd","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"productName\": \"T-Shirt (replaced)\",\n  \"productPrice\": 7.5,\n  \"productCategory\": \"Sport\",\n  \"productImage\": \"/image.png\"\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/3/lists/ShoppingCartList/items/{{itemLastId}}?type=EMAIL&identifier=janewilliams@example.com","description":"<p>Replace an item.</p>\n<p>Replaces an item of a list attribute and returns all items of the updated list.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>listName</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Name of the list attribute.</td>\n</tr>\n<tr>\n<td><em>itemId</em></td>\n<td>String</td>\n<td><strong>Required.</strong> UUID of the list item to replace.</td>\n</tr>\n<tr>\n<td><em>type</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Type of the person ID. Can be one of the above. One of: <code>ID</code>, <code>EXTERNAL_ID</code>, <code>PHONE</code>, <code>EMAIL</code>, <code>LINE</code>, <code>FACEBOOK</code>, <code>TELEGRAM</code>, <code>PUSH</code>, <code>LIVE_CHAT</code>, <code>VIBER_BOTS</code>, <code>INSTAGRAM</code>, <code>INSTAGRAM_DM</code>, <code>TWITTER</code>, <code>APPLE_BUSINESS_CHAT</code>, <code>KAKAO_SANGDAM</code>, <code>OPEN_CHANNEL</code>, <code>ZALO_FOLLOWER</code>, <code>TIKTOK_BM</code>, <code>WHATSAPP</code>, <code>KAKAO_TALK</code>.</td>\n</tr>\n<tr>\n<td><em>identifier</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Person ID. ID type must match the <code>type</code> parameter.</td>\n</tr>\n<tr>\n<td><em>sender</em></td>\n<td>String</td>\n<td>Sender or application ID.<code>sender</code> is required for all identifier types except <code>ID</code>, <code>EXTERNAL_ID</code>, <code>PHONE</code>, <code>EMAIL</code></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["people","3","lists","ShoppingCartList","items","{{itemLastId}}"],"host":["go2","vhdmedia","se"],"query":[{"key":"type","value":"EMAIL"},{"key":"identifier","value":"janewilliams@example.com"}],"variable":[]}},"response":[{"id":"d0944379-207b-41bb-b636-f54c060b95f1","name":"200 - Item replaced (the updated list is returned)","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"item_field_#1\": \"new field value\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}/items/{{itemId}}?type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}","items","{{itemId}}"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"__id\": \"b606345f-f7a6-4b9d-b9f1-75bdeaf0e55f\",\n    \"item_field_#1\": \"new field value\"\n  },\n  {\n    \"__id\": \"78f47a5a-b9c4-4802-8bed-e81cf5fde0b4\",\n    \"item_field_#1\": \"some value\",\n    \"item_field_#2\": 42\n  }\n]"},{"id":"6342113f-2d36-43ff-a2c7-9f3de6a0d34f","name":"400 - real VHD response","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"item_field_#1\": \"new field value\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}/items/{{itemId}}?type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}","items","{{itemId}}"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": 400101,\n  \"message\": \"Validation errors: property itemBody - size must be between 1 and 128\"\n}"},{"id":"02a242e2-cf73-4b08-9ba5-14d2f7b0e029","name":"401 - Example","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"item_field_#1\": \"new field value\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}/items/{{itemId}}?type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}","items","{{itemId}}"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"1140a983-ac96-4c30-b863-b871c6606765","name":"403 - Example","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"item_field_#1\": \"new field value\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}/items/{{itemId}}?type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}","items","{{itemId}}"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"b8e532cf-9269-4e25-8d38-4762e917b2c6","name":"404 - person doesn't exist","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"item_field_#1\": \"new field value\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}/items/{{itemId}}?type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}","items","{{itemId}}"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": 300101,\n  \"message\": \"Person with ID 'test@gmail.com' does not exist\"\n}"},{"id":"3e41d7c1-05c9-449a-a02c-1a63c2929e22","name":"429 - Example","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"item_field_#1\": \"new field value\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}/items/{{itemId}}?type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}","items","{{itemId}}"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"a67bd116-9518-4227-a1d8-da553f4f2ce0","name":"500 - Example","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"item_field_#1\": \"new field value\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}/items/{{itemId}}?type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}","items","{{itemId}}"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"a5da7a0d-4fc5-4665-a2c5-832d1272c8dd"},{"name":"Update a list","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an array\", function () {","    pm.expect(responseBody).to.be.an('array');","});"],"type":"text/javascript","packages":{}}}],"id":"ce8a01f6-2e3d-4198-b436-9499c5efde1f","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"PATCH","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"[\n  {\n    \"__id\": \"{{itemId}}\",\n    \"productName\": \"Sneakers (list-patched)\"\n  }\n]","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/3/lists/ShoppingCartList?type=EMAIL&identifier=janewilliams@example.com","description":"<p>Update a list.</p>\n<p>Updates the fields of list items passed in the request. Missing items and fields will keep their values. Returns all items of the updated list.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>listName</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Name of the list attribute.</td>\n</tr>\n<tr>\n<td><em>type</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Type of the person ID. Can be one of the above. One of: <code>ID</code>, <code>EXTERNAL_ID</code>, <code>PHONE</code>, <code>EMAIL</code>, <code>LINE</code>, <code>FACEBOOK</code>, <code>TELEGRAM</code>, <code>PUSH</code>, <code>LIVE_CHAT</code>, <code>VIBER_BOTS</code>, <code>INSTAGRAM</code>, <code>INSTAGRAM_DM</code>, <code>TWITTER</code>, <code>APPLE_BUSINESS_CHAT</code>, <code>KAKAO_SANGDAM</code>, <code>OPEN_CHANNEL</code>, <code>ZALO_FOLLOWER</code>, <code>TIKTOK_BM</code>, <code>WHATSAPP</code>, <code>KAKAO_TALK</code>.</td>\n</tr>\n<tr>\n<td><em>identifier</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Person ID. ID type must match the <code>type</code> parameter.</td>\n</tr>\n<tr>\n<td><em>sender</em></td>\n<td>String</td>\n<td>Sender or application ID.<code>sender</code> is required for all identifier types except <code>ID</code>, <code>EXTERNAL_ID</code>, <code>PHONE</code>, <code>EMAIL</code></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["people","3","lists","ShoppingCartList"],"host":["go2","vhdmedia","se"],"query":[{"key":"type","value":"EMAIL"},{"key":"identifier","value":"janewilliams@example.com"}],"variable":[]}},"response":[{"id":"3891555e-40b2-410b-98b6-f00d304a110a","name":"200 - Response example","originalRequest":{"method":"PATCH","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"[\n  {\n    \"__id\": \"78f47a5a-b9c4-4802-8bed-e81cf5fde0b4\",\n    \"item_field_#1\": \"new value\",\n    \"item_field_#2\": null\n  },\n  {\n    \"__id\": \"b606345f-f7a6-4b9d-b9f1-75bdeaf0e55f\",\n    \"item_field_#1\": \"new value\",\n    \"item_field_#2\": 42\n  }\n]","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}?type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"__id\": \"78f47a5a-b9c4-4802-8bed-e81cf5fde0b4\",\n    \"item_field_#1\": \"new value\",\n    \"item_field_#3\": \"old value\"\n  },\n  {\n    \"__id\": \"b606345f-f7a6-4b9d-b9f1-75bdeaf0e55f\",\n    \"item_field_#1\": \"new value\",\n    \"item_field_#2\": 42,\n    \"item_field_#3\": \"old value\"\n  }\n]"},{"id":"c2247764-4e41-448c-86cb-4454b3a9a45a","name":"400 - real VHD response","originalRequest":{"method":"PATCH","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"[\n  {\n    \"__id\": \"78f47a5a-b9c4-4802-8bed-e81cf5fde0b4\",\n    \"item_field_#1\": \"new value\",\n    \"item_field_#2\": null\n  },\n  {\n    \"__id\": \"b606345f-f7a6-4b9d-b9f1-75bdeaf0e55f\",\n    \"item_field_#1\": \"new value\",\n    \"item_field_#2\": 42\n  }\n]","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}?type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"message\": \"Invalid body\"\n}"},{"id":"7994c4d3-011f-41f2-a3ec-c3aa985f1642","name":"401 - Example","originalRequest":{"method":"PATCH","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"[\n  {\n    \"__id\": \"78f47a5a-b9c4-4802-8bed-e81cf5fde0b4\",\n    \"item_field_#1\": \"new value\",\n    \"item_field_#2\": null\n  },\n  {\n    \"__id\": \"b606345f-f7a6-4b9d-b9f1-75bdeaf0e55f\",\n    \"item_field_#1\": \"new value\",\n    \"item_field_#2\": 42\n  }\n]","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}?type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"c4c523d5-1577-4b9a-af01-1555496e7001","name":"403 - Example","originalRequest":{"method":"PATCH","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"[\n  {\n    \"__id\": \"78f47a5a-b9c4-4802-8bed-e81cf5fde0b4\",\n    \"item_field_#1\": \"new value\",\n    \"item_field_#2\": null\n  },\n  {\n    \"__id\": \"b606345f-f7a6-4b9d-b9f1-75bdeaf0e55f\",\n    \"item_field_#1\": \"new value\",\n    \"item_field_#2\": 42\n  }\n]","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}?type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"0a9ed5bf-bafa-4200-8426-ec3a36942785","name":"404 - person doesn't exist","originalRequest":{"method":"PATCH","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"[\n  {\n    \"__id\": \"78f47a5a-b9c4-4802-8bed-e81cf5fde0b4\",\n    \"item_field_#1\": \"new value\",\n    \"item_field_#2\": null\n  },\n  {\n    \"__id\": \"b606345f-f7a6-4b9d-b9f1-75bdeaf0e55f\",\n    \"item_field_#1\": \"new value\",\n    \"item_field_#2\": 42\n  }\n]","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}?type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": 300101,\n  \"message\": \"Person with ID 'test@gmail.com' does not exist\"\n}"},{"id":"c077d847-88f3-456b-8fea-d2c93fd456a4","name":"429 - Example","originalRequest":{"method":"PATCH","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"[\n  {\n    \"__id\": \"78f47a5a-b9c4-4802-8bed-e81cf5fde0b4\",\n    \"item_field_#1\": \"new value\",\n    \"item_field_#2\": null\n  },\n  {\n    \"__id\": \"b606345f-f7a6-4b9d-b9f1-75bdeaf0e55f\",\n    \"item_field_#1\": \"new value\",\n    \"item_field_#2\": 42\n  }\n]","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}?type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"1866cec0-9b91-4106-bd47-10eca92c5a49","name":"500 - Example","originalRequest":{"method":"PATCH","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"[\n  {\n    \"__id\": \"78f47a5a-b9c4-4802-8bed-e81cf5fde0b4\",\n    \"item_field_#1\": \"new value\",\n    \"item_field_#2\": null\n  },\n  {\n    \"__id\": \"b606345f-f7a6-4b9d-b9f1-75bdeaf0e55f\",\n    \"item_field_#1\": \"new value\",\n    \"item_field_#2\": 42\n  }\n]","options":{"raw":{"language":"json"}}},"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}?type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"ce8a01f6-2e3d-4198-b436-9499c5efde1f"},{"name":"Delete items","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var responseBody;","pm.test(\"Response body is valid JSON\", function () {","    responseBody = pm.response.json();","});","","pm.test(\"Response is an array\", function () {","    pm.expect(responseBody).to.be.an('array');","});"],"type":"text/javascript","packages":{}}}],"id":"8470eb07-edcc-4567-b9cd-38484ead8702","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/people/3/lists/ShoppingCartList/items?type=EMAIL&identifier=janewilliams@example.com&itemIds={{itemLastId}}","description":"<p>Delete items.</p>\n<p>Deletes items in a list attribute and returns all items of the updated list.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>listName</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Name of the list attribute.</td>\n</tr>\n<tr>\n<td><em>type</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Type of the person ID. Can be one of the above. One of: <code>ID</code>, <code>EXTERNAL_ID</code>, <code>PHONE</code>, <code>EMAIL</code>, <code>LINE</code>, <code>FACEBOOK</code>, <code>TELEGRAM</code>, <code>PUSH</code>, <code>LIVE_CHAT</code>, <code>VIBER_BOTS</code>, <code>INSTAGRAM</code>, <code>INSTAGRAM_DM</code>, <code>TWITTER</code>, <code>APPLE_BUSINESS_CHAT</code>, <code>KAKAO_SANGDAM</code>, <code>OPEN_CHANNEL</code>, <code>ZALO_FOLLOWER</code>, <code>TIKTOK_BM</code>, <code>WHATSAPP</code>, <code>KAKAO_TALK</code>.</td>\n</tr>\n<tr>\n<td><em>identifier</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Person ID. ID type must match the <code>type</code> parameter.</td>\n</tr>\n<tr>\n<td><em>sender</em></td>\n<td>String</td>\n<td>Sender or application ID.<code>sender</code> is required for all identifier types except <code>ID</code>, <code>EXTERNAL_ID</code>, <code>PHONE</code>, <code>EMAIL</code></td>\n</tr>\n<tr>\n<td><em>itemIds</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> UUIDs of list items to delete, separated by commas (,).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["people","3","lists","ShoppingCartList","items"],"host":["go2","vhdmedia","se"],"query":[{"key":"type","value":"EMAIL"},{"key":"identifier","value":"janewilliams@example.com"},{"key":"itemIds","value":"{{itemLastId}}"}],"variable":[]}},"response":[{"id":"ade134af-96fc-4ce7-83f4-2e956b8eebe4","name":"200 - Response example","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}/items?type={{personIdentifierType}}&identifier={{personId}}&itemIds={{itemIds}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}","items"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true},{"key":"itemIds","value":"{{itemIds}}","description":"UUIDs of list items to delete, separated by commas (,)."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"__id\": \"1d543ae8-957d-4fe6-b0f4-ad3ce1eb5bbf\",\n    \"item_field_#1\": \"some value\"\n  },\n  {\n    \"__id\": \"844011e5-8c0d-4447-b67f-499bb9ff2783\",\n    \"item_field_#1\": \"some value\",\n    \"item_field_#2\": 42\n  }\n]"},{"id":"ec24e272-43c9-4532-8584-53713400f7df","name":"400 - identifier is not provided","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}/items?type={{personIdentifierType}}&identifier={{personId}}&itemIds={{itemIds}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}","items"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true},{"key":"itemIds","value":"{{itemIds}}","description":"UUIDs of list items to delete, separated by commas (,)."}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": 400116,\n  \"message\": \"Missing parameter: identifier\"\n}"},{"id":"8f3f2cad-cd71-434c-998a-9b812f2100c3","name":"401 - Example","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}/items?type={{personIdentifierType}}&identifier={{personId}}&itemIds={{itemIds}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}","items"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true},{"key":"itemIds","value":"{{itemIds}}","description":"UUIDs of list items to delete, separated by commas (,)."}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"8cfd6f20-5e49-4efc-8cb8-027d57495058","name":"403 - Example","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}/items?type={{personIdentifierType}}&identifier={{personId}}&itemIds={{itemIds}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}","items"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true},{"key":"itemIds","value":"{{itemIds}}","description":"UUIDs of list items to delete, separated by commas (,)."}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"84a47edc-a668-4a89-8364-2874fc1609fb","name":"404 - real VHD response","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}/items?type={{personIdentifierType}}&identifier={{personId}}&itemIds={{itemIds}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}","items"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true},{"key":"itemIds","value":"{{itemIds}}","description":"UUIDs of list items to delete, separated by commas (,)."}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": 300101,\n  \"message\": \"Person with ID 'jane.smith@vhdmedia.se' does not exist\"\n}"},{"id":"bf0cbc39-b234-45fa-8340-661d0b93c98c","name":"429 - Example","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}/items?type={{personIdentifierType}}&identifier={{personId}}&itemIds={{itemIds}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}","items"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true},{"key":"itemIds","value":"{{itemIds}}","description":"UUIDs of list items to delete, separated by commas (,)."}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"d30f63dd-138c-4614-9a5e-9f2360ea6685","name":"500 - Example","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/lists/{{listName}}/items?type={{personIdentifierType}}&identifier={{personId}}&itemIds={{itemIds}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists","{{listName}}","items"],"query":[{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true},{"key":"itemIds","value":"{{itemIds}}","description":"UUIDs of list items to delete, separated by commas (,)."}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"8470eb07-edcc-4567-b9cd-38484ead8702"},{"name":"Delete lists","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 204\", function () {","    pm.expect(pm.response.code).to.be.oneOf([204]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});"],"type":"text/javascript","packages":{}}}],"id":"f8f0bb29-34b8-4ae7-8bd2-0d2b8aa9d98d","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/people/3/lists?listNames=ShoppingCartList&type=EMAIL&identifier=janewilliams@example.com","description":"<p>Delete lists.</p>\n<p>Deletes a single or multiple list attributes of a profile.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>listNames</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> Names of list attributes to delete, separated by commas (,).</td>\n</tr>\n<tr>\n<td><em>type</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Type of the person ID. Can be one of the above. One of: <code>ID</code>, <code>EXTERNAL_ID</code>, <code>PHONE</code>, <code>EMAIL</code>, <code>LINE</code>, <code>FACEBOOK</code>, <code>TELEGRAM</code>, <code>PUSH</code>, <code>LIVE_CHAT</code>, <code>VIBER_BOTS</code>, <code>INSTAGRAM</code>, <code>INSTAGRAM_DM</code>, <code>TWITTER</code>, <code>APPLE_BUSINESS_CHAT</code>, <code>KAKAO_SANGDAM</code>, <code>OPEN_CHANNEL</code>, <code>ZALO_FOLLOWER</code>, <code>TIKTOK_BM</code>, <code>WHATSAPP</code>, <code>KAKAO_TALK</code>.</td>\n</tr>\n<tr>\n<td><em>identifier</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Person ID. ID type must match the <code>type</code> parameter.</td>\n</tr>\n<tr>\n<td><em>sender</em></td>\n<td>String</td>\n<td>Sender or application ID.<code>sender</code> is required for all identifier types except <code>ID</code>, <code>EXTERNAL_ID</code>, <code>PHONE</code>, <code>EMAIL</code></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>204 No Content</code>.</p>\n<p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["people","3","lists"],"host":["go2","vhdmedia","se"],"query":[{"key":"listNames","value":"ShoppingCartList"},{"key":"type","value":"EMAIL"},{"key":"identifier","value":"janewilliams@example.com"}],"variable":[]}},"response":[{"id":"1d548289-4c9b-44fa-8645-26a99c0bebca","name":"204 No Content","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/lists?listNames={{listName}}&type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists"],"query":[{"key":"listNames","value":"{{listName}}","description":"Names of list attributes to delete, separated by commas (,)."},{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"No Content","code":204,"_postman_previewlanguage":"text","header":null,"cookie":[],"responseTime":null,"body":null},{"id":"455b0b5e-1876-4a72-b934-16a0d88e7f62","name":"400 - identifier is not provided","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/lists?listNames={{listName}}&type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists"],"query":[{"key":"listNames","value":"{{listName}}","description":"Names of list attributes to delete, separated by commas (,)."},{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": 400116,\n  \"message\": \"Missing parameter: identifier\"\n}"},{"id":"c3ed3ffe-eae8-4329-8d73-6dc844b059ad","name":"401 - Example","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/lists?listNames={{listName}}&type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists"],"query":[{"key":"listNames","value":"{{listName}}","description":"Names of list attributes to delete, separated by commas (,)."},{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Unauthorized\"\n    }\n  }\n}"},{"id":"bed10c20-c918-472d-b2bf-fc722c605d0a","name":"403 - Example","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/lists?listNames={{listName}}&type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists"],"query":[{"key":"listNames","value":"{{listName}}","description":"Names of list attributes to delete, separated by commas (,)."},{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"49eb71df-c5c6-468f-8914-4a995bfbbce8","name":"404 - real VHD response","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/lists?listNames={{listName}}&type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists"],"query":[{"key":"listNames","value":"{{listName}}","description":"Names of list attributes to delete, separated by commas (,)."},{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": 300101,\n  \"message\": \"Person with ID 'jane.smith@vhdmedia.se' does not exist\"\n}"},{"id":"2c609cdf-23fa-4860-ab75-6868a030a783","name":"429 - Example","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/lists?listNames={{listName}}&type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists"],"query":[{"key":"listNames","value":"{{listName}}","description":"Names of list attributes to delete, separated by commas (,)."},{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"5aaf69c6-2242-4916-ab05-c090b8c84521","name":"500 - Example","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/lists?listNames={{listName}}&type={{personIdentifierType}}&identifier={{personId}}","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","lists"],"query":[{"key":"listNames","value":"{{listName}}","description":"Names of list attributes to delete, separated by commas (,)."},{"key":"type","value":"{{personIdentifierType}}","description":"Type of the person ID. Can be one of the above."},{"key":"identifier","value":"{{personId}}","description":"Person ID. ID type must match the `type` parameter."},{"key":"sender","value":"","description":"Sender or application ID.`sender` is required for all identifier types except `ID`, `EXTERNAL_ID`, `PHONE`, `EMAIL`","disabled":true}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"f8f0bb29-34b8-4ae7-8bd2-0d2b8aa9d98d"}],"id":"dc2dc490-3a6a-40fd-9dd4-ee786f103465","description":"<p>Lists store ordered items on a person profile, for example a shopping cart or a wish list. These are the current (v3) list requests; they replace the earlier list requests of the People API. Each request identifies the person with the <code>identifier</code> and <code>type</code> query parameters.</p>\n","_postman_id":"dc2dc490-3a6a-40fd-9dd4-ee786f103465"},{"name":"SEGMENTS","item":[{"name":"Create a segment","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","(function () {","    api(\"GET\", \"/people/3/segments?size=100\", null, function (e, r) {","        var list = ((jsonOf(r) || {}).results || []).filter(function (s) { return s.name === \"Sample segment\"; });","        (function next(i) { if (i >= list.length) { return; } api(\"DELETE\", \"/people/3/segments/\" + list[i].id, null, function () { next(i + 1); }); })(0);","    });","})();"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests for Create a segment.","pm.test(\"Status code is 201\", function () {","    pm.expect(pm.response.code).to.be.oneOf([201]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var res;","pm.test(\"Response body is valid JSON\", function () { res = pm.response.json(); });","","pm.test(\"Segment has the documented fields\", function () {","    pm.expect(res).to.be.an('object');","    pm.expect(res).to.have.property('id');","    pm.expect(res).to.have.property('name').that.is.a('string');","});","","","var r = pm.response.json();","pm.environment.set(\"segmentId\", String(r.id));"],"type":"text/javascript","packages":{}}}],"id":"74fd28c3-06e8-4a52-b4ac-ded0a948cfa7","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Sample segment\",\n  \"description\": \"Everyone whose first name starts with J\",\n  \"query\": {\n    \"#startsWith\": {\n      \"firstName\": \"J\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/3/segments","description":"<p>Create a segment.</p>\n<p>Use this method to create a segment.</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td><strong>Required.</strong> A unique segment name.</td>\n</tr>\n<tr>\n<td><em>description</em></td>\n<td>String</td>\n<td>Segment description.</td>\n</tr>\n<tr>\n<td><em>query</em></td>\n<td>Object</td>\n<td>Allows to filter persons using simple queries. ##### Supported logical operators <table> <thead> <tr> <th>Operator</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#and</code></td> <td>All records that match the conditions of all clauses.</td> <td><code>{\"#and\":[{\"firstName\":\"John\"},{\"lastName\":\"Smith\"}]}</code></td> </tr> <tr> <td><code>#or</code></td> <td>All records that match the conditions of any clause.</td> <td><code>{\"#or\":[{\"firstName\":\"John\"},{\"firstName\":\"Jane\"}]}</code></td> </tr> </table> ##### Supported comparison operators <table> <thead> <tr> <th>Attributes</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#notExist</code></td> <td>Matches records that do not have given attribute.</td> <td><code>{\"#notExist\":\"firstName\"}</code></td> </tr> <tr> <td><code>#exist</code></td> <td>Matches records that have given attribute.</td> <td><code>{\"#exists\":\"firstName\"}</code></td> </tr> <thead> <tr> <th>Strings</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#eq</code></td> <td>Equals to a specified string.</td> <td><code>{\"firstName\":\"John\"}</code></td> </tr> <tr> <td><code>#ne</code></td> <td>Not equal to a specified string.</td> <td><code>{\"#ne\":{\"firstName\":\"John\"}}</code></td> </tr> <tr> <td><code>#startsWith</code></td> <td>Starts with a specified string.</td> <td><code>{\"#startsWith\":{\"firstName\":\"John\"}}</code></td> </tr> <tr> <td><code>#endsWith</code></td> <td>Ends with a specified string.</td> <td><code>{\"#endsWith\":{\"firstName\":\"John\"}}</code></td> </tr> <tr> <td><code>#contains</code></td> <td>Contains a specified string.</td> <td><code>{\"#contains\":{\"firstName\":\"oh\"}}</code></td> </tr> <tr> <td><code>#notContain</code></td> <td>Does not contain a specified string.</td> <td><code>{\"#notContain\":{\"firstName\":\"oh\"}}</code></td> </tr> <tr> <td><code>#in</code></td> <td>At least one of the strings in a list.</td> <td><code>{\"#in\":{\"firstName\":[\"John\",\"Jane\"]}}</code></td> </tr> <tr> <td><code>#notIn</code></td> <td>Not any of the strings in a list.</td> <td><code>{\"#notIn\":{\"firstName\":[\"John\",\"Jane\"]}}</code></td> </tr> <thead> <tr> <th>Dates</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#eq</code></td> <td>Equals to a specified date.</td> <td><code>{\"birthDate\":\"1987-07-10\"}</code></td> </tr> <tr> <td><code>#ne</code></td> <td>Not equal to a specified date.</td> <td><code>{\"#ne\":{\"birthDate\":\"1987-07-10\"}}</code></td> </tr> <tr> <td><code>#eq (relative)</code></td> <td>Will be in specified interval.</td> <td><code>{\"#eq\":{\"birthDate\":{\"#relNow\":\"P1D\"}}}</code></td> </tr> <tr> <td><code>#lt (relative)</code></td> <td>Will be within a specified interval.</td> <td><code>{\"#lt\":{\"birthDate\":{\"#relNow\":\"P1D\"}}}</code></td> </tr> <tr> <td><code>#gt (relative)</code></td> <td>Will be in more than a specified interval.</td> <td><code>{\"#gt\":{\"birthDate\":{\"#relNow\":\"P1D\"}}}</code></td> </tr> <tr> <td><code>#eq (relative) -</code></td> <td>Was a specified interval ago.</td> <td><code>{\"#eq\":{\"birthDate\":{\"#relNow\":\"P-1D\"}}}</code></td> </tr> <tr> <td><code>#gt (relative) -</code></td> <td>Was within a specified interval ago.</td> <td><code>{\"#gt\":{\"birthDate\":{\"#relNow\":\"P-1D\"}}}</code></td> </tr> <tr> <td><code>#gt (relative) -</code></td> <td>Was more than a specified interval ago.</td> <td><code>{\"#gt\":{\"birthDate\":{\"#relNow\":\"P-1D\"}}}</code></td> </tr> <tr> <td><code>#lt</code></td> <td>Is before a specified date.</td> <td><code>{\"#lt\":{\"birthDate\":\"1987-07-10\"}}</code></td> </tr> <tr> <td><code>#lte</code></td> <td>Is before or equal to a specified date.</td> <td><code>{\"#lte\":{\"birthDate\":\"1987-07-10\"}}</code></td> </tr> <tr> <td><code>#gt</code></td> <td>Is after a specified date.</td> <td><code>{\"#gt\":{\"birthDate\":\"1987-07-10\"}}</code></td> </tr> <tr> <td><code>#gte</code></td> <td>Is after or equal to a specified date.</td> <td><code>{\"#gte\":{\"birthDate\":\"1987-07-10\"}}</code></td> </tr> <tr> <td><code>#in</code></td> <td>Is equal to one of dates in a given list.</td> <td><code>{\"#in\":{\"birthDate\":[\"1987-07-10\",\"1987-07-11\"]}}</code></td> </tr> <tr> <td><code>#notIn</code></td> <td>Is not equal to any of dates in a given list.</td> <td><code>{\"#notIn\":{\"birthDate\":[\"1987-07-10\",\"1987-07-11\"]}}</code></td> </tr> <thead> <tr> <th>Integers</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#eq</code></td> <td>Equals to a specified integer.</td> <td><code>{\"data\\u0001counter\":1}</code></td> </tr> <tr> <td><code>#ne</code></td> <td>Not equal to a specified integer.</td> <td><code>{\"#ne\":{\"data\\u0001counter\":1}}</code></td> </tr> <tr> <td><code>#lt</code></td> <td>Is less than a specified integer.</td> <td><code>{\"#lt\":{\"data\\u0001counter\":1}}</code></td> </tr> <tr> <td><code>#lte</code></td> <td>Is less than or equal to a specified integer.</td> <td><code>{\"#lte\":{\"data\\u0001counter\":1}}</code></td> </tr> <tr> <td><code>#gt</code></td> <td>Is greater than a specified integer.</td> <td><code>{\"#gt\":{\"data\\u0001counter\":1}}</code></td> </tr> <tr> <td><code>#gte</code></td> <td>Is greater than or equal to a specified integer.</td> <td><code>{\"#gte\":{\"data\\u0001counter\":1}}</code></td> </tr> <tr> <td><code>#in</code></td> <td>Is equal to any of specified integers in a list.</td> <td><code>{\"#in\":{\"data\\u0001counter\":[1,2,3]}}</code></td> </tr> <tr> <td><code>#notIn</code></td> <td>Is not equal to any of specified integers in a list.</td> <td><code>{\"#notIn\":{\"data\\u0001counter\":[1,2,3]}}</code></td> </tr> <thead> <tr> <th>Decimals</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#eq</code></td> <td>Equals to a specified decimal.</td> <td><code>{\"data\\u0001price\":1.1}</code></td> </tr> <tr> <td><code>#ne</code></td> <td>Is not equal to a specified decimal.</td> <td><code>{\"#ne\":{\"data\\u0001price\":1.1}}</code></td> </tr> <tr> <td><code>#lt</code></td> <td>Is less than a specified decimal.</td> <td><code>{\"#lt\":{\"data\\u0001price\":1.1}}</code></td> </tr> <tr> <td><code>#lte</code></td> <td>Is less than or equal to a specified decimal.</td> <td><code>{\"#lte\":{\"data\\u0001price\":1.1}}</code></td> </tr> <tr> <td><code>#gt</code></td> <td>Is greater than a specified decimal.</td> <td><code>{\"#gt\":{\"data\\u0001price\":1.1}}</code></td> </tr> <tr> <td><code>#gte</code></td> <td>Is greater than or equal to a specified decimal.</td> <td><code>{\"#gte\":{\"data\\u0001price\":1.1}}</code></td> </tr> <tr> <td><code>#in</code></td> <td>Is equal to any of specified decimals in a list.</td> <td><code>{\"#in\":{\"data\\u0001price\":[1.1,2.1,3.0]}}</code></td> </tr> <tr> <td><code>#notIn</code></td> <td>Is not equal to any of specified decimals in a list.</td> <td><code>{\"#notIn\":{\"data\\u0001price\":[1.1,2.1,3.0]}}</code></td> </tr> <thead> <tr> <th>Booleans</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#eq</code></td> <td>Equals to a specified boolean.</td> <td><code>{\"data\\u0001happy\":true}</code></td> </tr> <tr> <td><code>#ne</code></td> <td>Not equal to a specified boolean.</td> <td><code>{\"#ne\":{\"data\\u0001happy\":true}}</code></td> </tr> <thead> <tr> <th>Tags</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#contains</code></td> <td>Contains a specified tag.</td> <td><code>{\"#contains\":{\"tags\":\"SOME_TAG\"}}</code></td> </tr> <tr> <td><code>#notContain</code></td> <td>Does not contain a specified tag.</td> <td><code>{\"#notContain\":{\"tags\":\"SOME_TAG\"}}</code></td> </tr> <thead> <tr> <th>Gender</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#eq</code></td> <td>Equals a specified gender.</td> <td><code>{\"gender\":\"MALE\"}</code></td> </tr> <tr> <td><code>#ne</code></td> <td>Does not equal a specified gender.</td> <td><code>{\"#ne\":{\"gender\":\"FEMALE\"}}</code></td> </tr> <thead> <tr> <th>Lists</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#all</code></td> <td>All items in the list match.</td> <td><code>{\"#all\":{\"data\\u0001Cart\":{\"#and\":[{\"ProductName\":\"Laptop\"},{\"ProductPrice\":2000}]}}}</code> </td> </tr> <tr> <td><code>#any</code></td> <td>Any item in the list match.</td> <td><code>{\"#any\":{\"data\\u0001Cart\":{\"#and\":[{\"ProductName\":\"Laptop\"},{\"ProductPrice\":2000}]}}}</code> </td> </tr> </table></td>\n</tr>\n<tr>\n<td><em>events</em></td>\n<td>Array</td>\n<td>List of events that persons should match.</td>\n</tr>\n<tr>\n<td><em>events[].definitionId</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Event definition ID.</td>\n</tr>\n<tr>\n<td><em>events[].occurrenceCondition</em></td>\n<td>Object</td>\n<td>Specify how many times did the event occur.</td>\n</tr>\n<tr>\n<td><em>events[].occurrenceCondition.operation</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Operation to compare how many times the event has occurred. One of: <code>IS</code>, <code>LESS_THAN</code>, <code>LESS_OR_EQUAL</code>, <code>GREATER_OR_EQUAL</code>, <code>GREATER_THAN</code>.</td>\n</tr>\n<tr>\n<td><em>events[].occurrenceCondition.times</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Number of times the event has occurred.</td>\n</tr>\n<tr>\n<td><em>events[].timelineCondition</em></td>\n<td>Object</td>\n<td><strong>Required.</strong> Specify in which timespan did the event occur.</td>\n</tr>\n<tr>\n<td><em>events[].timelineCondition.occurred</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Specifies whether an event is occurring for the first or last time within a given period. Additionally, we can use an operator to specify if any event has occurred or never occurred within the specified timeframe. One of: <code>ALL</code>, <code>FIRST</code>, <code>LAST</code>, <code>NOT</code>.</td>\n</tr>\n<tr>\n<td><em>events[].timelineCondition.operator</em></td>\n<td>String</td>\n<td><strong>Required.</strong> The operators AFTER, BEFORE, and BETWEEN can be used to specify relative time periods, while their counterparts with the suffix _ABS (e.g., AFTER_ABS, BEFORE_ABS, BETWEEN_ABS) are used for absolute time values. These operators can be applied with start and end attributes to define the beginning and ending points of the time. Units need to be used with relative operators to specify the duration of the time periods. One of: <code>EMPTY</code>, <code>AFTER</code>, <code>BEFORE</code>, <code>BETWEEN</code>, <code>AFTER_ABS</code>, <code>BEFORE_ABS</code>, <code>BETWEEN_ABS</code>.</td>\n</tr>\n<tr>\n<td><em>events[].timelineCondition.start</em></td>\n<td>Int</td>\n<td>Start of timespan: For relative operators, specify the number of units. For absolute operators, provide a Unix timestamp.</td>\n</tr>\n<tr>\n<td><em>events[].timelineCondition.end</em></td>\n<td>Int</td>\n<td>End of timespan: For relative operators, specify the number of units. For absolute operators, provide a Unix timestamp.</td>\n</tr>\n<tr>\n<td><em>events[].timelineCondition.units</em></td>\n<td>String</td>\n<td>Time units for relative operators. One of: <code>DAYS</code>, <code>HOURS</code>, <code>MINUTES</code>.</td>\n</tr>\n<tr>\n<td><em>events[].payloadConditions</em></td>\n<td>Array</td>\n<td>Specify the conditions of the event payload.</td>\n</tr>\n<tr>\n<td><em>events[].payloadConditions[].attribute</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Event payload attribute.</td>\n</tr>\n<tr>\n<td><em>events[].payloadConditions[].operator</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Operator for comparing condition value with payload value. One of: <code>EQ</code>, <code>LT</code>, <code>LTE</code>, <code>GT</code>, <code>GTE</code>, <code>NE</code>, <code>SW</code>, <code>EW</code>, <code>CON</code>.</td>\n</tr>\n<tr>\n<td><em>events[].payloadConditions[].value</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Payload condition value.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>201 Created</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>id</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> A unique segment identifier.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td><strong>Required.</strong> A unique segment name.</td>\n</tr>\n<tr>\n<td><em>description</em></td>\n<td>String</td>\n<td>Segment description.</td>\n</tr>\n<tr>\n<td><em>query</em></td>\n<td>Object</td>\n<td>Allows to filter persons using simple queries. ##### Supported logical operators <table> <thead> <tr> <th>Operator</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#and</code></td> <td>All records that match the conditions of all clauses.</td> <td><code>{\"#and\":[{\"firstName\":\"John\"},{\"lastName\":\"Smith\"}]}</code></td> </tr> <tr> <td><code>#or</code></td> <td>All records that match the conditions of any clause.</td> <td><code>{\"#or\":[{\"firstName\":\"John\"},{\"firstName\":\"Jane\"}]}</code></td> </tr> </table> ##### Supported comparison operators <table> <thead> <tr> <th>Attributes</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#notExist</code></td> <td>Matches records that do not have given attribute.</td> <td><code>{\"#notExist\":\"firstName\"}</code></td> </tr> <tr> <td><code>#exist</code></td> <td>Matches records that have given attribute.</td> <td><code>{\"#exists\":\"firstName\"}</code></td> </tr> <thead> <tr> <th>Strings</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#eq</code></td> <td>Equals to a specified string.</td> <td><code>{\"firstName\":\"John\"}</code></td> </tr> <tr> <td><code>#ne</code></td> <td>Not equal to a specified string.</td> <td><code>{\"#ne\":{\"firstName\":\"John\"}}</code></td> </tr> <tr> <td><code>#startsWith</code></td> <td>Starts with a specified string.</td> <td><code>{\"#startsWith\":{\"firstName\":\"John\"}}</code></td> </tr> <tr> <td><code>#endsWith</code></td> <td>Ends with a specified string.</td> <td><code>{\"#endsWith\":{\"firstName\":\"John\"}}</code></td> </tr> <tr> <td><code>#contains</code></td> <td>Contains a specified string.</td> <td><code>{\"#contains\":{\"firstName\":\"oh\"}}</code></td> </tr> <tr> <td><code>#notContain</code></td> <td>Does not contain a specified string.</td> <td><code>{\"#notContain\":{\"firstName\":\"oh\"}}</code></td> </tr> <tr> <td><code>#in</code></td> <td>At least one of the strings in a list.</td> <td><code>{\"#in\":{\"firstName\":[\"John\",\"Jane\"]}}</code></td> </tr> <tr> <td><code>#notIn</code></td> <td>Not any of the strings in a list.</td> <td><code>{\"#notIn\":{\"firstName\":[\"John\",\"Jane\"]}}</code></td> </tr> <thead> <tr> <th>Dates</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#eq</code></td> <td>Equals to a specified date.</td> <td><code>{\"birthDate\":\"1987-07-10\"}</code></td> </tr> <tr> <td><code>#ne</code></td> <td>Not equal to a specified date.</td> <td><code>{\"#ne\":{\"birthDate\":\"1987-07-10\"}}</code></td> </tr> <tr> <td><code>#eq (relative)</code></td> <td>Will be in specified interval.</td> <td><code>{\"#eq\":{\"birthDate\":{\"#relNow\":\"P1D\"}}}</code></td> </tr> <tr> <td><code>#lt (relative)</code></td> <td>Will be within a specified interval.</td> <td><code>{\"#lt\":{\"birthDate\":{\"#relNow\":\"P1D\"}}}</code></td> </tr> <tr> <td><code>#gt (relative)</code></td> <td>Will be in more than a specified interval.</td> <td><code>{\"#gt\":{\"birthDate\":{\"#relNow\":\"P1D\"}}}</code></td> </tr> <tr> <td><code>#eq (relative) -</code></td> <td>Was a specified interval ago.</td> <td><code>{\"#eq\":{\"birthDate\":{\"#relNow\":\"P-1D\"}}}</code></td> </tr> <tr> <td><code>#gt (relative) -</code></td> <td>Was within a specified interval ago.</td> <td><code>{\"#gt\":{\"birthDate\":{\"#relNow\":\"P-1D\"}}}</code></td> </tr> <tr> <td><code>#gt (relative) -</code></td> <td>Was more than a specified interval ago.</td> <td><code>{\"#gt\":{\"birthDate\":{\"#relNow\":\"P-1D\"}}}</code></td> </tr> <tr> <td><code>#lt</code></td> <td>Is before a specified date.</td> <td><code>{\"#lt\":{\"birthDate\":\"1987-07-10\"}}</code></td> </tr> <tr> <td><code>#lte</code></td> <td>Is before or equal to a specified date.</td> <td><code>{\"#lte\":{\"birthDate\":\"1987-07-10\"}}</code></td> </tr> <tr> <td><code>#gt</code></td> <td>Is after a specified date.</td> <td><code>{\"#gt\":{\"birthDate\":\"1987-07-10\"}}</code></td> </tr> <tr> <td><code>#gte</code></td> <td>Is after or equal to a specified date.</td> <td><code>{\"#gte\":{\"birthDate\":\"1987-07-10\"}}</code></td> </tr> <tr> <td><code>#in</code></td> <td>Is equal to one of dates in a given list.</td> <td><code>{\"#in\":{\"birthDate\":[\"1987-07-10\",\"1987-07-11\"]}}</code></td> </tr> <tr> <td><code>#notIn</code></td> <td>Is not equal to any of dates in a given list.</td> <td><code>{\"#notIn\":{\"birthDate\":[\"1987-07-10\",\"1987-07-11\"]}}</code></td> </tr> <thead> <tr> <th>Integers</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#eq</code></td> <td>Equals to a specified integer.</td> <td><code>{\"data\\u0001counter\":1}</code></td> </tr> <tr> <td><code>#ne</code></td> <td>Not equal to a specified integer.</td> <td><code>{\"#ne\":{\"data\\u0001counter\":1}}</code></td> </tr> <tr> <td><code>#lt</code></td> <td>Is less than a specified integer.</td> <td><code>{\"#lt\":{\"data\\u0001counter\":1}}</code></td> </tr> <tr> <td><code>#lte</code></td> <td>Is less than or equal to a specified integer.</td> <td><code>{\"#lte\":{\"data\\u0001counter\":1}}</code></td> </tr> <tr> <td><code>#gt</code></td> <td>Is greater than a specified integer.</td> <td><code>{\"#gt\":{\"data\\u0001counter\":1}}</code></td> </tr> <tr> <td><code>#gte</code></td> <td>Is greater than or equal to a specified integer.</td> <td><code>{\"#gte\":{\"data\\u0001counter\":1}}</code></td> </tr> <tr> <td><code>#in</code></td> <td>Is equal to any of specified integers in a list.</td> <td><code>{\"#in\":{\"data\\u0001counter\":[1,2,3]}}</code></td> </tr> <tr> <td><code>#notIn</code></td> <td>Is not equal to any of specified integers in a list.</td> <td><code>{\"#notIn\":{\"data\\u0001counter\":[1,2,3]}}</code></td> </tr> <thead> <tr> <th>Decimals</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#eq</code></td> <td>Equals to a specified decimal.</td> <td><code>{\"data\\u0001price\":1.1}</code></td> </tr> <tr> <td><code>#ne</code></td> <td>Is not equal to a specified decimal.</td> <td><code>{\"#ne\":{\"data\\u0001price\":1.1}}</code></td> </tr> <tr> <td><code>#lt</code></td> <td>Is less than a specified decimal.</td> <td><code>{\"#lt\":{\"data\\u0001price\":1.1}}</code></td> </tr> <tr> <td><code>#lte</code></td> <td>Is less than or equal to a specified decimal.</td> <td><code>{\"#lte\":{\"data\\u0001price\":1.1}}</code></td> </tr> <tr> <td><code>#gt</code></td> <td>Is greater than a specified decimal.</td> <td><code>{\"#gt\":{\"data\\u0001price\":1.1}}</code></td> </tr> <tr> <td><code>#gte</code></td> <td>Is greater than or equal to a specified decimal.</td> <td><code>{\"#gte\":{\"data\\u0001price\":1.1}}</code></td> </tr> <tr> <td><code>#in</code></td> <td>Is equal to any of specified decimals in a list.</td> <td><code>{\"#in\":{\"data\\u0001price\":[1.1,2.1,3.0]}}</code></td> </tr> <tr> <td><code>#notIn</code></td> <td>Is not equal to any of specified decimals in a list.</td> <td><code>{\"#notIn\":{\"data\\u0001price\":[1.1,2.1,3.0]}}</code></td> </tr> <thead> <tr> <th>Booleans</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#eq</code></td> <td>Equals to a specified boolean.</td> <td><code>{\"data\\u0001happy\":true}</code></td> </tr> <tr> <td><code>#ne</code></td> <td>Not equal to a specified boolean.</td> <td><code>{\"#ne\":{\"data\\u0001happy\":true}}</code></td> </tr> <thead> <tr> <th>Tags</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#contains</code></td> <td>Contains a specified tag.</td> <td><code>{\"#contains\":{\"tags\":\"SOME_TAG\"}}</code></td> </tr> <tr> <td><code>#notContain</code></td> <td>Does not contain a specified tag.</td> <td><code>{\"#notContain\":{\"tags\":\"SOME_TAG\"}}</code></td> </tr> <thead> <tr> <th>Gender</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#eq</code></td> <td>Equals a specified gender.</td> <td><code>{\"gender\":\"MALE\"}</code></td> </tr> <tr> <td><code>#ne</code></td> <td>Does not equal a specified gender.</td> <td><code>{\"#ne\":{\"gender\":\"FEMALE\"}}</code></td> </tr> <thead> <tr> <th>Lists</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#all</code></td> <td>All items in the list match.</td> <td><code>{\"#all\":{\"data\\u0001Cart\":{\"#and\":[{\"ProductName\":\"Laptop\"},{\"ProductPrice\":2000}]}}}</code> </td> </tr> <tr> <td><code>#any</code></td> <td>Any item in the list match.</td> <td><code>{\"#any\":{\"data\\u0001Cart\":{\"#and\":[{\"ProductName\":\"Laptop\"},{\"ProductPrice\":2000}]}}}</code> </td> </tr> </table></td>\n</tr>\n<tr>\n<td><em>events</em></td>\n<td>Array</td>\n<td>List of events that persons should match.</td>\n</tr>\n<tr>\n<td><em>events[].definitionId</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Event definition ID.</td>\n</tr>\n<tr>\n<td><em>events[].occurrenceCondition</em></td>\n<td>Object</td>\n<td>Specify how many times did the event occur.</td>\n</tr>\n<tr>\n<td><em>events[].occurrenceCondition.operation</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Operation to compare how many times the event has occurred. One of: <code>IS</code>, <code>LESS_THAN</code>, <code>LESS_OR_EQUAL</code>, <code>GREATER_OR_EQUAL</code>, <code>GREATER_THAN</code>.</td>\n</tr>\n<tr>\n<td><em>events[].occurrenceCondition.times</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Number of times the event has occurred.</td>\n</tr>\n<tr>\n<td><em>events[].timelineCondition</em></td>\n<td>Object</td>\n<td><strong>Required.</strong> Specify in which timespan did the event occur.</td>\n</tr>\n<tr>\n<td><em>events[].timelineCondition.occurred</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Specifies whether an event is occurring for the first or last time within a given period. Additionally, we can use an operator to specify if any event has occurred or never occurred within the specified timeframe. One of: <code>ALL</code>, <code>FIRST</code>, <code>LAST</code>, <code>NOT</code>.</td>\n</tr>\n<tr>\n<td><em>events[].timelineCondition.operator</em></td>\n<td>String</td>\n<td><strong>Required.</strong> The operators AFTER, BEFORE, and BETWEEN can be used to specify relative time periods, while their counterparts with the suffix _ABS (e.g., AFTER_ABS, BEFORE_ABS, BETWEEN_ABS) are used for absolute time values. These operators can be applied with start and end attributes to define the beginning and ending points of the time. Units need to be used with relative operators to specify the duration of the time periods. One of: <code>EMPTY</code>, <code>AFTER</code>, <code>BEFORE</code>, <code>BETWEEN</code>, <code>AFTER_ABS</code>, <code>BEFORE_ABS</code>, <code>BETWEEN_ABS</code>.</td>\n</tr>\n<tr>\n<td><em>events[].timelineCondition.start</em></td>\n<td>Int</td>\n<td>Start of timespan: For relative operators, specify the number of units. For absolute operators, provide a Unix timestamp.</td>\n</tr>\n<tr>\n<td><em>events[].timelineCondition.end</em></td>\n<td>Int</td>\n<td>End of timespan: For relative operators, specify the number of units. For absolute operators, provide a Unix timestamp.</td>\n</tr>\n<tr>\n<td><em>events[].timelineCondition.units</em></td>\n<td>String</td>\n<td>Time units for relative operators. One of: <code>DAYS</code>, <code>HOURS</code>, <code>MINUTES</code>.</td>\n</tr>\n<tr>\n<td><em>events[].payloadConditions</em></td>\n<td>Array</td>\n<td>Specify the conditions of the event payload.</td>\n</tr>\n<tr>\n<td><em>events[].payloadConditions[].attribute</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Event payload attribute.</td>\n</tr>\n<tr>\n<td><em>events[].payloadConditions[].operator</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Operator for comparing condition value with payload value. One of: <code>EQ</code>, <code>LT</code>, <code>LTE</code>, <code>GT</code>, <code>GTE</code>, <code>NE</code>, <code>SW</code>, <code>EW</code>, <code>CON</code>.</td>\n</tr>\n<tr>\n<td><em>events[].payloadConditions[].value</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Payload condition value.</td>\n</tr>\n<tr>\n<td><em>createdAt</em></td>\n<td>String</td>\n<td>Date and time of creation. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSSZ</code>.</td>\n</tr>\n<tr>\n<td><em>modifiedAt</em></td>\n<td>String</td>\n<td>Date and time of last modification. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSSZ</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["people","3","segments"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"ac359d69-cf56-424a-849d-fa5e61823d4e","name":"201 Created","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/people/3/segments"},"status":"Created","code":201,"_postman_previewlanguage":"text","header":null,"cookie":[],"responseTime":null,"body":null},{"id":"afede060-91db-455e-8575-b22dbc4e0740","name":"400 - real VHD response","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/people/3/segments"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E400\",\n  \"description\": \"Request cannot be processed.\",\n  \"action\": \"Check the syntax, violations and adjust the request.\",\n  \"violations\": [\n    {\n      \"property\": \"name\",\n      \"violation\": \"Invalid type\"\n    }\n  ],\n  \"resources\": []\n}"},{"id":"ae9619fb-7bc2-400b-9bb0-5764e6c5dd27","name":"401 - Example","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/people/3/segments"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E401\",\n  \"description\": \"The request lacks valid authentication credentials for the requested resource.\",\n  \"action\": \"Check the resources and adjust authentication credentials.\",\n  \"violations\": [],\n  \"resources\": [\n    {\n      \"name\": \"API Authentication\",\n      \"url\": \"https://www.vhd.com/docs/essentials/api-authentication\"\n    }\n  ]\n}"},{"id":"8020e290-257e-4b9e-be90-e8507cda2a3f","name":"403 - Example","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/people/3/segments"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E403\",\n  \"description\": \"Insufficient permissions to access the requested resource.\",\n  \"action\": \"Repeat the request with new or different credentials.\",\n  \"violations\": [],\n  \"resources\": [\n    {\n      \"name\": \"API Scopes\",\n      \"url\": \"https://www.vhd.com/docs/essentials/api-essentials/api-authorization#api-scopes\"\n    }\n  ]\n}"},{"id":"65a1fd25-d56d-4d97-99cc-a7caa3a4eb89","name":"429 - Example","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/people/3/segments"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E429\",\n  \"description\": \"Too many requests sent.\",\n  \"action\": \"Check request rate limit specified in the API endpoint documentation resource.\",\n  \"violations\": [],\n  \"resources\": [\n    {\n      \"name\": \"Throttling handling errors\",\n      \"url\": \"https://www.vhd.com/docs/essentials/integration-best-practices#throttling-handling-errors\"\n    }\n  ]\n}"},{"id":"32a06675-c024-4288-a129-a74775380fbf","name":"500 - Example","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/people/3/segments"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E500\",\n  \"description\": \"Something went wrong.\",\n  \"action\": \"Contact the support.\",\n  \"violations\": [],\n  \"resources\": []\n}"}],"_postman_id":"74fd28c3-06e8-4a52-b4ac-ded0a948cfa7"},{"name":"Get a segment","event":[{"listen":"test","script":{"exec":["// Tests for Get a segment.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var res;","pm.test(\"Response body is valid JSON\", function () { res = pm.response.json(); });","","pm.test(\"Segment has the documented fields\", function () {","    pm.expect(res).to.be.an('object');","    pm.expect(res).to.have.property('id');","    pm.expect(res).to.have.property('name').that.is.a('string');","});",""],"type":"text/javascript","packages":{}}}],"id":"191840db-89e3-4010-b28b-1969cc069b2f","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/people/3/segments/{{segmentId}}","description":"<p>Get a segment.</p>\n<p>Use this method to get a segment by ID.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>segmentId</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> A unique segment identifier.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>id</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> A unique segment identifier.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td><strong>Required.</strong> A unique segment name.</td>\n</tr>\n<tr>\n<td><em>description</em></td>\n<td>String</td>\n<td>Segment description.</td>\n</tr>\n<tr>\n<td><em>query</em></td>\n<td>Object</td>\n<td>Allows to filter persons using simple queries. ##### Supported logical operators <table> <thead> <tr> <th>Operator</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#and</code></td> <td>All records that match the conditions of all clauses.</td> <td><code>{\"#and\":[{\"firstName\":\"John\"},{\"lastName\":\"Smith\"}]}</code></td> </tr> <tr> <td><code>#or</code></td> <td>All records that match the conditions of any clause.</td> <td><code>{\"#or\":[{\"firstName\":\"John\"},{\"firstName\":\"Jane\"}]}</code></td> </tr> </table> ##### Supported comparison operators <table> <thead> <tr> <th>Attributes</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#notExist</code></td> <td>Matches records that do not have given attribute.</td> <td><code>{\"#notExist\":\"firstName\"}</code></td> </tr> <tr> <td><code>#exist</code></td> <td>Matches records that have given attribute.</td> <td><code>{\"#exists\":\"firstName\"}</code></td> </tr> <thead> <tr> <th>Strings</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#eq</code></td> <td>Equals to a specified string.</td> <td><code>{\"firstName\":\"John\"}</code></td> </tr> <tr> <td><code>#ne</code></td> <td>Not equal to a specified string.</td> <td><code>{\"#ne\":{\"firstName\":\"John\"}}</code></td> </tr> <tr> <td><code>#startsWith</code></td> <td>Starts with a specified string.</td> <td><code>{\"#startsWith\":{\"firstName\":\"John\"}}</code></td> </tr> <tr> <td><code>#endsWith</code></td> <td>Ends with a specified string.</td> <td><code>{\"#endsWith\":{\"firstName\":\"John\"}}</code></td> </tr> <tr> <td><code>#contains</code></td> <td>Contains a specified string.</td> <td><code>{\"#contains\":{\"firstName\":\"oh\"}}</code></td> </tr> <tr> <td><code>#notContain</code></td> <td>Does not contain a specified string.</td> <td><code>{\"#notContain\":{\"firstName\":\"oh\"}}</code></td> </tr> <tr> <td><code>#in</code></td> <td>At least one of the strings in a list.</td> <td><code>{\"#in\":{\"firstName\":[\"John\",\"Jane\"]}}</code></td> </tr> <tr> <td><code>#notIn</code></td> <td>Not any of the strings in a list.</td> <td><code>{\"#notIn\":{\"firstName\":[\"John\",\"Jane\"]}}</code></td> </tr> <thead> <tr> <th>Dates</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#eq</code></td> <td>Equals to a specified date.</td> <td><code>{\"birthDate\":\"1987-07-10\"}</code></td> </tr> <tr> <td><code>#ne</code></td> <td>Not equal to a specified date.</td> <td><code>{\"#ne\":{\"birthDate\":\"1987-07-10\"}}</code></td> </tr> <tr> <td><code>#eq (relative)</code></td> <td>Will be in specified interval.</td> <td><code>{\"#eq\":{\"birthDate\":{\"#relNow\":\"P1D\"}}}</code></td> </tr> <tr> <td><code>#lt (relative)</code></td> <td>Will be within a specified interval.</td> <td><code>{\"#lt\":{\"birthDate\":{\"#relNow\":\"P1D\"}}}</code></td> </tr> <tr> <td><code>#gt (relative)</code></td> <td>Will be in more than a specified interval.</td> <td><code>{\"#gt\":{\"birthDate\":{\"#relNow\":\"P1D\"}}}</code></td> </tr> <tr> <td><code>#eq (relative) -</code></td> <td>Was a specified interval ago.</td> <td><code>{\"#eq\":{\"birthDate\":{\"#relNow\":\"P-1D\"}}}</code></td> </tr> <tr> <td><code>#gt (relative) -</code></td> <td>Was within a specified interval ago.</td> <td><code>{\"#gt\":{\"birthDate\":{\"#relNow\":\"P-1D\"}}}</code></td> </tr> <tr> <td><code>#gt (relative) -</code></td> <td>Was more than a specified interval ago.</td> <td><code>{\"#gt\":{\"birthDate\":{\"#relNow\":\"P-1D\"}}}</code></td> </tr> <tr> <td><code>#lt</code></td> <td>Is before a specified date.</td> <td><code>{\"#lt\":{\"birthDate\":\"1987-07-10\"}}</code></td> </tr> <tr> <td><code>#lte</code></td> <td>Is before or equal to a specified date.</td> <td><code>{\"#lte\":{\"birthDate\":\"1987-07-10\"}}</code></td> </tr> <tr> <td><code>#gt</code></td> <td>Is after a specified date.</td> <td><code>{\"#gt\":{\"birthDate\":\"1987-07-10\"}}</code></td> </tr> <tr> <td><code>#gte</code></td> <td>Is after or equal to a specified date.</td> <td><code>{\"#gte\":{\"birthDate\":\"1987-07-10\"}}</code></td> </tr> <tr> <td><code>#in</code></td> <td>Is equal to one of dates in a given list.</td> <td><code>{\"#in\":{\"birthDate\":[\"1987-07-10\",\"1987-07-11\"]}}</code></td> </tr> <tr> <td><code>#notIn</code></td> <td>Is not equal to any of dates in a given list.</td> <td><code>{\"#notIn\":{\"birthDate\":[\"1987-07-10\",\"1987-07-11\"]}}</code></td> </tr> <thead> <tr> <th>Integers</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#eq</code></td> <td>Equals to a specified integer.</td> <td><code>{\"data\\u0001counter\":1}</code></td> </tr> <tr> <td><code>#ne</code></td> <td>Not equal to a specified integer.</td> <td><code>{\"#ne\":{\"data\\u0001counter\":1}}</code></td> </tr> <tr> <td><code>#lt</code></td> <td>Is less than a specified integer.</td> <td><code>{\"#lt\":{\"data\\u0001counter\":1}}</code></td> </tr> <tr> <td><code>#lte</code></td> <td>Is less than or equal to a specified integer.</td> <td><code>{\"#lte\":{\"data\\u0001counter\":1}}</code></td> </tr> <tr> <td><code>#gt</code></td> <td>Is greater than a specified integer.</td> <td><code>{\"#gt\":{\"data\\u0001counter\":1}}</code></td> </tr> <tr> <td><code>#gte</code></td> <td>Is greater than or equal to a specified integer.</td> <td><code>{\"#gte\":{\"data\\u0001counter\":1}}</code></td> </tr> <tr> <td><code>#in</code></td> <td>Is equal to any of specified integers in a list.</td> <td><code>{\"#in\":{\"data\\u0001counter\":[1,2,3]}}</code></td> </tr> <tr> <td><code>#notIn</code></td> <td>Is not equal to any of specified integers in a list.</td> <td><code>{\"#notIn\":{\"data\\u0001counter\":[1,2,3]}}</code></td> </tr> <thead> <tr> <th>Decimals</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#eq</code></td> <td>Equals to a specified decimal.</td> <td><code>{\"data\\u0001price\":1.1}</code></td> </tr> <tr> <td><code>#ne</code></td> <td>Is not equal to a specified decimal.</td> <td><code>{\"#ne\":{\"data\\u0001price\":1.1}}</code></td> </tr> <tr> <td><code>#lt</code></td> <td>Is less than a specified decimal.</td> <td><code>{\"#lt\":{\"data\\u0001price\":1.1}}</code></td> </tr> <tr> <td><code>#lte</code></td> <td>Is less than or equal to a specified decimal.</td> <td><code>{\"#lte\":{\"data\\u0001price\":1.1}}</code></td> </tr> <tr> <td><code>#gt</code></td> <td>Is greater than a specified decimal.</td> <td><code>{\"#gt\":{\"data\\u0001price\":1.1}}</code></td> </tr> <tr> <td><code>#gte</code></td> <td>Is greater than or equal to a specified decimal.</td> <td><code>{\"#gte\":{\"data\\u0001price\":1.1}}</code></td> </tr> <tr> <td><code>#in</code></td> <td>Is equal to any of specified decimals in a list.</td> <td><code>{\"#in\":{\"data\\u0001price\":[1.1,2.1,3.0]}}</code></td> </tr> <tr> <td><code>#notIn</code></td> <td>Is not equal to any of specified decimals in a list.</td> <td><code>{\"#notIn\":{\"data\\u0001price\":[1.1,2.1,3.0]}}</code></td> </tr> <thead> <tr> <th>Booleans</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#eq</code></td> <td>Equals to a specified boolean.</td> <td><code>{\"data\\u0001happy\":true}</code></td> </tr> <tr> <td><code>#ne</code></td> <td>Not equal to a specified boolean.</td> <td><code>{\"#ne\":{\"data\\u0001happy\":true}}</code></td> </tr> <thead> <tr> <th>Tags</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#contains</code></td> <td>Contains a specified tag.</td> <td><code>{\"#contains\":{\"tags\":\"SOME_TAG\"}}</code></td> </tr> <tr> <td><code>#notContain</code></td> <td>Does not contain a specified tag.</td> <td><code>{\"#notContain\":{\"tags\":\"SOME_TAG\"}}</code></td> </tr> <thead> <tr> <th>Gender</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#eq</code></td> <td>Equals a specified gender.</td> <td><code>{\"gender\":\"MALE\"}</code></td> </tr> <tr> <td><code>#ne</code></td> <td>Does not equal a specified gender.</td> <td><code>{\"#ne\":{\"gender\":\"FEMALE\"}}</code></td> </tr> <thead> <tr> <th>Lists</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#all</code></td> <td>All items in the list match.</td> <td><code>{\"#all\":{\"data\\u0001Cart\":{\"#and\":[{\"ProductName\":\"Laptop\"},{\"ProductPrice\":2000}]}}}</code> </td> </tr> <tr> <td><code>#any</code></td> <td>Any item in the list match.</td> <td><code>{\"#any\":{\"data\\u0001Cart\":{\"#and\":[{\"ProductName\":\"Laptop\"},{\"ProductPrice\":2000}]}}}</code> </td> </tr> </table></td>\n</tr>\n<tr>\n<td><em>events</em></td>\n<td>Array</td>\n<td>List of events that persons should match.</td>\n</tr>\n<tr>\n<td><em>events[].definitionId</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Event definition ID.</td>\n</tr>\n<tr>\n<td><em>events[].occurrenceCondition</em></td>\n<td>Object</td>\n<td>Specify how many times did the event occur.</td>\n</tr>\n<tr>\n<td><em>events[].occurrenceCondition.operation</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Operation to compare how many times the event has occurred. One of: <code>IS</code>, <code>LESS_THAN</code>, <code>LESS_OR_EQUAL</code>, <code>GREATER_OR_EQUAL</code>, <code>GREATER_THAN</code>.</td>\n</tr>\n<tr>\n<td><em>events[].occurrenceCondition.times</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Number of times the event has occurred.</td>\n</tr>\n<tr>\n<td><em>events[].timelineCondition</em></td>\n<td>Object</td>\n<td><strong>Required.</strong> Specify in which timespan did the event occur.</td>\n</tr>\n<tr>\n<td><em>events[].timelineCondition.occurred</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Specifies whether an event is occurring for the first or last time within a given period. Additionally, we can use an operator to specify if any event has occurred or never occurred within the specified timeframe. One of: <code>ALL</code>, <code>FIRST</code>, <code>LAST</code>, <code>NOT</code>.</td>\n</tr>\n<tr>\n<td><em>events[].timelineCondition.operator</em></td>\n<td>String</td>\n<td><strong>Required.</strong> The operators AFTER, BEFORE, and BETWEEN can be used to specify relative time periods, while their counterparts with the suffix _ABS (e.g., AFTER_ABS, BEFORE_ABS, BETWEEN_ABS) are used for absolute time values. These operators can be applied with start and end attributes to define the beginning and ending points of the time. Units need to be used with relative operators to specify the duration of the time periods. One of: <code>EMPTY</code>, <code>AFTER</code>, <code>BEFORE</code>, <code>BETWEEN</code>, <code>AFTER_ABS</code>, <code>BEFORE_ABS</code>, <code>BETWEEN_ABS</code>.</td>\n</tr>\n<tr>\n<td><em>events[].timelineCondition.start</em></td>\n<td>Int</td>\n<td>Start of timespan: For relative operators, specify the number of units. For absolute operators, provide a Unix timestamp.</td>\n</tr>\n<tr>\n<td><em>events[].timelineCondition.end</em></td>\n<td>Int</td>\n<td>End of timespan: For relative operators, specify the number of units. For absolute operators, provide a Unix timestamp.</td>\n</tr>\n<tr>\n<td><em>events[].timelineCondition.units</em></td>\n<td>String</td>\n<td>Time units for relative operators. One of: <code>DAYS</code>, <code>HOURS</code>, <code>MINUTES</code>.</td>\n</tr>\n<tr>\n<td><em>events[].payloadConditions</em></td>\n<td>Array</td>\n<td>Specify the conditions of the event payload.</td>\n</tr>\n<tr>\n<td><em>events[].payloadConditions[].attribute</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Event payload attribute.</td>\n</tr>\n<tr>\n<td><em>events[].payloadConditions[].operator</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Operator for comparing condition value with payload value. One of: <code>EQ</code>, <code>LT</code>, <code>LTE</code>, <code>GT</code>, <code>GTE</code>, <code>NE</code>, <code>SW</code>, <code>EW</code>, <code>CON</code>.</td>\n</tr>\n<tr>\n<td><em>events[].payloadConditions[].value</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Payload condition value.</td>\n</tr>\n<tr>\n<td><em>createdAt</em></td>\n<td>String</td>\n<td>Date and time of creation. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSSZ</code>.</td>\n</tr>\n<tr>\n<td><em>modifiedAt</em></td>\n<td>String</td>\n<td>Date and time of last modification. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSSZ</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["people","3","segments","{{segmentId}}"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"f2d5d0c9-74c8-4ca7-956c-3f40b78712a6","name":"200 OK","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/people/3/segments/{{segmentId}}"},"status":"OK","code":200,"_postman_previewlanguage":"text","header":null,"cookie":[],"responseTime":null,"body":null},{"id":"9377049b-0445-4433-ade3-c02a55b2fd17","name":"401 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/people/3/segments/{{segmentId}}"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E401\",\n  \"description\": \"The request lacks valid authentication credentials for the requested resource.\",\n  \"action\": \"Check the resources and adjust authentication credentials.\",\n  \"violations\": [],\n  \"resources\": [\n    {\n      \"name\": \"API Authentication\",\n      \"url\": \"https://www.vhd.com/docs/essentials/api-authentication\"\n    }\n  ]\n}"},{"id":"fd1dcbdd-a1e3-4234-9547-f1287c3fa3da","name":"403 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/people/3/segments/{{segmentId}}"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E403\",\n  \"description\": \"Insufficient permissions to access the requested resource.\",\n  \"action\": \"Repeat the request with new or different credentials.\",\n  \"violations\": [],\n  \"resources\": [\n    {\n      \"name\": \"API Scopes\",\n      \"url\": \"https://www.vhd.com/docs/essentials/api-essentials/api-authorization#api-scopes\"\n    }\n  ]\n}"},{"id":"50b201de-13f2-4bce-b3b9-8fbbd71fe53a","name":"404 - real VHD response","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/people/3/segments/{{segmentId}}"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E404\",\n  \"description\": \"Not found - request URL doesn't exist on the API server or resource is not found.\",\n  \"action\": \"Check the resources and adjust your request.\",\n  \"violations\": [\n    {\n      \"violation\": \"Segment with given id does not exist.\"\n    }\n  ],\n  \"resources\": []\n}"},{"id":"1953cbe4-b131-4b78-b5fe-259e0d26c413","name":"429 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/people/3/segments/{{segmentId}}"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E429\",\n  \"description\": \"Too many requests sent.\",\n  \"action\": \"Check request rate limit specified in the API endpoint documentation resource.\",\n  \"violations\": [],\n  \"resources\": [\n    {\n      \"name\": \"Throttling handling errors\",\n      \"url\": \"https://www.vhd.com/docs/essentials/integration-best-practices#throttling-handling-errors\"\n    }\n  ]\n}"},{"id":"063a34db-999e-4a2e-bffd-6e8bbc04dc9e","name":"500 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/people/3/segments/{{segmentId}}"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E500\",\n  \"description\": \"Something went wrong.\",\n  \"action\": \"Contact the support.\",\n  \"violations\": [],\n  \"resources\": []\n}"}],"_postman_id":"191840db-89e3-4010-b28b-1969cc069b2f"},{"name":"Update a segment","event":[{"listen":"test","script":{"exec":["// Tests for Update a segment.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var res;","pm.test(\"Response body is valid JSON\", function () { res = pm.response.json(); });","","pm.test(\"Segment has the documented fields\", function () {","    pm.expect(res).to.be.an('object');","    pm.expect(res).to.have.property('id');","    pm.expect(res).to.have.property('name').that.is.a('string');","});",""],"type":"text/javascript","packages":{}}}],"id":"35dc3d6b-96ab-4fdf-ba09-9f2d206ae4f8","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Sample segment\",\n  \"description\": \"Updated sample segment\",\n  \"query\": {\n    \"#startsWith\": {\n      \"firstName\": \"J\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/people/3/segments/{{segmentId}}","description":"<p>Update a segment.</p>\n<p>Use this method to update a segment.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>segmentId</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> A unique segment identifier.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td><strong>Required.</strong> A unique segment name.</td>\n</tr>\n<tr>\n<td><em>description</em></td>\n<td>String</td>\n<td>Segment description.</td>\n</tr>\n<tr>\n<td><em>query</em></td>\n<td>Object</td>\n<td>Allows to filter persons using simple queries. ##### Supported logical operators <table> <thead> <tr> <th>Operator</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#and</code></td> <td>All records that match the conditions of all clauses.</td> <td><code>{\"#and\":[{\"firstName\":\"John\"},{\"lastName\":\"Smith\"}]}</code></td> </tr> <tr> <td><code>#or</code></td> <td>All records that match the conditions of any clause.</td> <td><code>{\"#or\":[{\"firstName\":\"John\"},{\"firstName\":\"Jane\"}]}</code></td> </tr> </table> ##### Supported comparison operators <table> <thead> <tr> <th>Attributes</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#notExist</code></td> <td>Matches records that do not have given attribute.</td> <td><code>{\"#notExist\":\"firstName\"}</code></td> </tr> <tr> <td><code>#exist</code></td> <td>Matches records that have given attribute.</td> <td><code>{\"#exists\":\"firstName\"}</code></td> </tr> <thead> <tr> <th>Strings</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#eq</code></td> <td>Equals to a specified string.</td> <td><code>{\"firstName\":\"John\"}</code></td> </tr> <tr> <td><code>#ne</code></td> <td>Not equal to a specified string.</td> <td><code>{\"#ne\":{\"firstName\":\"John\"}}</code></td> </tr> <tr> <td><code>#startsWith</code></td> <td>Starts with a specified string.</td> <td><code>{\"#startsWith\":{\"firstName\":\"John\"}}</code></td> </tr> <tr> <td><code>#endsWith</code></td> <td>Ends with a specified string.</td> <td><code>{\"#endsWith\":{\"firstName\":\"John\"}}</code></td> </tr> <tr> <td><code>#contains</code></td> <td>Contains a specified string.</td> <td><code>{\"#contains\":{\"firstName\":\"oh\"}}</code></td> </tr> <tr> <td><code>#notContain</code></td> <td>Does not contain a specified string.</td> <td><code>{\"#notContain\":{\"firstName\":\"oh\"}}</code></td> </tr> <tr> <td><code>#in</code></td> <td>At least one of the strings in a list.</td> <td><code>{\"#in\":{\"firstName\":[\"John\",\"Jane\"]}}</code></td> </tr> <tr> <td><code>#notIn</code></td> <td>Not any of the strings in a list.</td> <td><code>{\"#notIn\":{\"firstName\":[\"John\",\"Jane\"]}}</code></td> </tr> <thead> <tr> <th>Dates</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#eq</code></td> <td>Equals to a specified date.</td> <td><code>{\"birthDate\":\"1987-07-10\"}</code></td> </tr> <tr> <td><code>#ne</code></td> <td>Not equal to a specified date.</td> <td><code>{\"#ne\":{\"birthDate\":\"1987-07-10\"}}</code></td> </tr> <tr> <td><code>#eq (relative)</code></td> <td>Will be in specified interval.</td> <td><code>{\"#eq\":{\"birthDate\":{\"#relNow\":\"P1D\"}}}</code></td> </tr> <tr> <td><code>#lt (relative)</code></td> <td>Will be within a specified interval.</td> <td><code>{\"#lt\":{\"birthDate\":{\"#relNow\":\"P1D\"}}}</code></td> </tr> <tr> <td><code>#gt (relative)</code></td> <td>Will be in more than a specified interval.</td> <td><code>{\"#gt\":{\"birthDate\":{\"#relNow\":\"P1D\"}}}</code></td> </tr> <tr> <td><code>#eq (relative) -</code></td> <td>Was a specified interval ago.</td> <td><code>{\"#eq\":{\"birthDate\":{\"#relNow\":\"P-1D\"}}}</code></td> </tr> <tr> <td><code>#gt (relative) -</code></td> <td>Was within a specified interval ago.</td> <td><code>{\"#gt\":{\"birthDate\":{\"#relNow\":\"P-1D\"}}}</code></td> </tr> <tr> <td><code>#gt (relative) -</code></td> <td>Was more than a specified interval ago.</td> <td><code>{\"#gt\":{\"birthDate\":{\"#relNow\":\"P-1D\"}}}</code></td> </tr> <tr> <td><code>#lt</code></td> <td>Is before a specified date.</td> <td><code>{\"#lt\":{\"birthDate\":\"1987-07-10\"}}</code></td> </tr> <tr> <td><code>#lte</code></td> <td>Is before or equal to a specified date.</td> <td><code>{\"#lte\":{\"birthDate\":\"1987-07-10\"}}</code></td> </tr> <tr> <td><code>#gt</code></td> <td>Is after a specified date.</td> <td><code>{\"#gt\":{\"birthDate\":\"1987-07-10\"}}</code></td> </tr> <tr> <td><code>#gte</code></td> <td>Is after or equal to a specified date.</td> <td><code>{\"#gte\":{\"birthDate\":\"1987-07-10\"}}</code></td> </tr> <tr> <td><code>#in</code></td> <td>Is equal to one of dates in a given list.</td> <td><code>{\"#in\":{\"birthDate\":[\"1987-07-10\",\"1987-07-11\"]}}</code></td> </tr> <tr> <td><code>#notIn</code></td> <td>Is not equal to any of dates in a given list.</td> <td><code>{\"#notIn\":{\"birthDate\":[\"1987-07-10\",\"1987-07-11\"]}}</code></td> </tr> <thead> <tr> <th>Integers</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#eq</code></td> <td>Equals to a specified integer.</td> <td><code>{\"data\\u0001counter\":1}</code></td> </tr> <tr> <td><code>#ne</code></td> <td>Not equal to a specified integer.</td> <td><code>{\"#ne\":{\"data\\u0001counter\":1}}</code></td> </tr> <tr> <td><code>#lt</code></td> <td>Is less than a specified integer.</td> <td><code>{\"#lt\":{\"data\\u0001counter\":1}}</code></td> </tr> <tr> <td><code>#lte</code></td> <td>Is less than or equal to a specified integer.</td> <td><code>{\"#lte\":{\"data\\u0001counter\":1}}</code></td> </tr> <tr> <td><code>#gt</code></td> <td>Is greater than a specified integer.</td> <td><code>{\"#gt\":{\"data\\u0001counter\":1}}</code></td> </tr> <tr> <td><code>#gte</code></td> <td>Is greater than or equal to a specified integer.</td> <td><code>{\"#gte\":{\"data\\u0001counter\":1}}</code></td> </tr> <tr> <td><code>#in</code></td> <td>Is equal to any of specified integers in a list.</td> <td><code>{\"#in\":{\"data\\u0001counter\":[1,2,3]}}</code></td> </tr> <tr> <td><code>#notIn</code></td> <td>Is not equal to any of specified integers in a list.</td> <td><code>{\"#notIn\":{\"data\\u0001counter\":[1,2,3]}}</code></td> </tr> <thead> <tr> <th>Decimals</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#eq</code></td> <td>Equals to a specified decimal.</td> <td><code>{\"data\\u0001price\":1.1}</code></td> </tr> <tr> <td><code>#ne</code></td> <td>Is not equal to a specified decimal.</td> <td><code>{\"#ne\":{\"data\\u0001price\":1.1}}</code></td> </tr> <tr> <td><code>#lt</code></td> <td>Is less than a specified decimal.</td> <td><code>{\"#lt\":{\"data\\u0001price\":1.1}}</code></td> </tr> <tr> <td><code>#lte</code></td> <td>Is less than or equal to a specified decimal.</td> <td><code>{\"#lte\":{\"data\\u0001price\":1.1}}</code></td> </tr> <tr> <td><code>#gt</code></td> <td>Is greater than a specified decimal.</td> <td><code>{\"#gt\":{\"data\\u0001price\":1.1}}</code></td> </tr> <tr> <td><code>#gte</code></td> <td>Is greater than or equal to a specified decimal.</td> <td><code>{\"#gte\":{\"data\\u0001price\":1.1}}</code></td> </tr> <tr> <td><code>#in</code></td> <td>Is equal to any of specified decimals in a list.</td> <td><code>{\"#in\":{\"data\\u0001price\":[1.1,2.1,3.0]}}</code></td> </tr> <tr> <td><code>#notIn</code></td> <td>Is not equal to any of specified decimals in a list.</td> <td><code>{\"#notIn\":{\"data\\u0001price\":[1.1,2.1,3.0]}}</code></td> </tr> <thead> <tr> <th>Booleans</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#eq</code></td> <td>Equals to a specified boolean.</td> <td><code>{\"data\\u0001happy\":true}</code></td> </tr> <tr> <td><code>#ne</code></td> <td>Not equal to a specified boolean.</td> <td><code>{\"#ne\":{\"data\\u0001happy\":true}}</code></td> </tr> <thead> <tr> <th>Tags</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#contains</code></td> <td>Contains a specified tag.</td> <td><code>{\"#contains\":{\"tags\":\"SOME_TAG\"}}</code></td> </tr> <tr> <td><code>#notContain</code></td> <td>Does not contain a specified tag.</td> <td><code>{\"#notContain\":{\"tags\":\"SOME_TAG\"}}</code></td> </tr> <thead> <tr> <th>Gender</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#eq</code></td> <td>Equals a specified gender.</td> <td><code>{\"gender\":\"MALE\"}</code></td> </tr> <tr> <td><code>#ne</code></td> <td>Does not equal a specified gender.</td> <td><code>{\"#ne\":{\"gender\":\"FEMALE\"}}</code></td> </tr> <thead> <tr> <th>Lists</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#all</code></td> <td>All items in the list match.</td> <td><code>{\"#all\":{\"data\\u0001Cart\":{\"#and\":[{\"ProductName\":\"Laptop\"},{\"ProductPrice\":2000}]}}}</code> </td> </tr> <tr> <td><code>#any</code></td> <td>Any item in the list match.</td> <td><code>{\"#any\":{\"data\\u0001Cart\":{\"#and\":[{\"ProductName\":\"Laptop\"},{\"ProductPrice\":2000}]}}}</code> </td> </tr> </table></td>\n</tr>\n<tr>\n<td><em>events</em></td>\n<td>Array</td>\n<td>List of events that persons should match.</td>\n</tr>\n<tr>\n<td><em>events[].definitionId</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Event definition ID.</td>\n</tr>\n<tr>\n<td><em>events[].occurrenceCondition</em></td>\n<td>Object</td>\n<td>Specify how many times did the event occur.</td>\n</tr>\n<tr>\n<td><em>events[].occurrenceCondition.operation</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Operation to compare how many times the event has occurred. One of: <code>IS</code>, <code>LESS_THAN</code>, <code>LESS_OR_EQUAL</code>, <code>GREATER_OR_EQUAL</code>, <code>GREATER_THAN</code>.</td>\n</tr>\n<tr>\n<td><em>events[].occurrenceCondition.times</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Number of times the event has occurred.</td>\n</tr>\n<tr>\n<td><em>events[].timelineCondition</em></td>\n<td>Object</td>\n<td><strong>Required.</strong> Specify in which timespan did the event occur.</td>\n</tr>\n<tr>\n<td><em>events[].timelineCondition.occurred</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Specifies whether an event is occurring for the first or last time within a given period. Additionally, we can use an operator to specify if any event has occurred or never occurred within the specified timeframe. One of: <code>ALL</code>, <code>FIRST</code>, <code>LAST</code>, <code>NOT</code>.</td>\n</tr>\n<tr>\n<td><em>events[].timelineCondition.operator</em></td>\n<td>String</td>\n<td><strong>Required.</strong> The operators AFTER, BEFORE, and BETWEEN can be used to specify relative time periods, while their counterparts with the suffix _ABS (e.g., AFTER_ABS, BEFORE_ABS, BETWEEN_ABS) are used for absolute time values. These operators can be applied with start and end attributes to define the beginning and ending points of the time. Units need to be used with relative operators to specify the duration of the time periods. One of: <code>EMPTY</code>, <code>AFTER</code>, <code>BEFORE</code>, <code>BETWEEN</code>, <code>AFTER_ABS</code>, <code>BEFORE_ABS</code>, <code>BETWEEN_ABS</code>.</td>\n</tr>\n<tr>\n<td><em>events[].timelineCondition.start</em></td>\n<td>Int</td>\n<td>Start of timespan: For relative operators, specify the number of units. For absolute operators, provide a Unix timestamp.</td>\n</tr>\n<tr>\n<td><em>events[].timelineCondition.end</em></td>\n<td>Int</td>\n<td>End of timespan: For relative operators, specify the number of units. For absolute operators, provide a Unix timestamp.</td>\n</tr>\n<tr>\n<td><em>events[].timelineCondition.units</em></td>\n<td>String</td>\n<td>Time units for relative operators. One of: <code>DAYS</code>, <code>HOURS</code>, <code>MINUTES</code>.</td>\n</tr>\n<tr>\n<td><em>events[].payloadConditions</em></td>\n<td>Array</td>\n<td>Specify the conditions of the event payload.</td>\n</tr>\n<tr>\n<td><em>events[].payloadConditions[].attribute</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Event payload attribute.</td>\n</tr>\n<tr>\n<td><em>events[].payloadConditions[].operator</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Operator for comparing condition value with payload value. One of: <code>EQ</code>, <code>LT</code>, <code>LTE</code>, <code>GT</code>, <code>GTE</code>, <code>NE</code>, <code>SW</code>, <code>EW</code>, <code>CON</code>.</td>\n</tr>\n<tr>\n<td><em>events[].payloadConditions[].value</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Payload condition value.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>id</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> A unique segment identifier.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td><strong>Required.</strong> A unique segment name.</td>\n</tr>\n<tr>\n<td><em>description</em></td>\n<td>String</td>\n<td>Segment description.</td>\n</tr>\n<tr>\n<td><em>query</em></td>\n<td>Object</td>\n<td>Allows to filter persons using simple queries. ##### Supported logical operators <table> <thead> <tr> <th>Operator</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#and</code></td> <td>All records that match the conditions of all clauses.</td> <td><code>{\"#and\":[{\"firstName\":\"John\"},{\"lastName\":\"Smith\"}]}</code></td> </tr> <tr> <td><code>#or</code></td> <td>All records that match the conditions of any clause.</td> <td><code>{\"#or\":[{\"firstName\":\"John\"},{\"firstName\":\"Jane\"}]}</code></td> </tr> </table> ##### Supported comparison operators <table> <thead> <tr> <th>Attributes</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#notExist</code></td> <td>Matches records that do not have given attribute.</td> <td><code>{\"#notExist\":\"firstName\"}</code></td> </tr> <tr> <td><code>#exist</code></td> <td>Matches records that have given attribute.</td> <td><code>{\"#exists\":\"firstName\"}</code></td> </tr> <thead> <tr> <th>Strings</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#eq</code></td> <td>Equals to a specified string.</td> <td><code>{\"firstName\":\"John\"}</code></td> </tr> <tr> <td><code>#ne</code></td> <td>Not equal to a specified string.</td> <td><code>{\"#ne\":{\"firstName\":\"John\"}}</code></td> </tr> <tr> <td><code>#startsWith</code></td> <td>Starts with a specified string.</td> <td><code>{\"#startsWith\":{\"firstName\":\"John\"}}</code></td> </tr> <tr> <td><code>#endsWith</code></td> <td>Ends with a specified string.</td> <td><code>{\"#endsWith\":{\"firstName\":\"John\"}}</code></td> </tr> <tr> <td><code>#contains</code></td> <td>Contains a specified string.</td> <td><code>{\"#contains\":{\"firstName\":\"oh\"}}</code></td> </tr> <tr> <td><code>#notContain</code></td> <td>Does not contain a specified string.</td> <td><code>{\"#notContain\":{\"firstName\":\"oh\"}}</code></td> </tr> <tr> <td><code>#in</code></td> <td>At least one of the strings in a list.</td> <td><code>{\"#in\":{\"firstName\":[\"John\",\"Jane\"]}}</code></td> </tr> <tr> <td><code>#notIn</code></td> <td>Not any of the strings in a list.</td> <td><code>{\"#notIn\":{\"firstName\":[\"John\",\"Jane\"]}}</code></td> </tr> <thead> <tr> <th>Dates</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#eq</code></td> <td>Equals to a specified date.</td> <td><code>{\"birthDate\":\"1987-07-10\"}</code></td> </tr> <tr> <td><code>#ne</code></td> <td>Not equal to a specified date.</td> <td><code>{\"#ne\":{\"birthDate\":\"1987-07-10\"}}</code></td> </tr> <tr> <td><code>#eq (relative)</code></td> <td>Will be in specified interval.</td> <td><code>{\"#eq\":{\"birthDate\":{\"#relNow\":\"P1D\"}}}</code></td> </tr> <tr> <td><code>#lt (relative)</code></td> <td>Will be within a specified interval.</td> <td><code>{\"#lt\":{\"birthDate\":{\"#relNow\":\"P1D\"}}}</code></td> </tr> <tr> <td><code>#gt (relative)</code></td> <td>Will be in more than a specified interval.</td> <td><code>{\"#gt\":{\"birthDate\":{\"#relNow\":\"P1D\"}}}</code></td> </tr> <tr> <td><code>#eq (relative) -</code></td> <td>Was a specified interval ago.</td> <td><code>{\"#eq\":{\"birthDate\":{\"#relNow\":\"P-1D\"}}}</code></td> </tr> <tr> <td><code>#gt (relative) -</code></td> <td>Was within a specified interval ago.</td> <td><code>{\"#gt\":{\"birthDate\":{\"#relNow\":\"P-1D\"}}}</code></td> </tr> <tr> <td><code>#gt (relative) -</code></td> <td>Was more than a specified interval ago.</td> <td><code>{\"#gt\":{\"birthDate\":{\"#relNow\":\"P-1D\"}}}</code></td> </tr> <tr> <td><code>#lt</code></td> <td>Is before a specified date.</td> <td><code>{\"#lt\":{\"birthDate\":\"1987-07-10\"}}</code></td> </tr> <tr> <td><code>#lte</code></td> <td>Is before or equal to a specified date.</td> <td><code>{\"#lte\":{\"birthDate\":\"1987-07-10\"}}</code></td> </tr> <tr> <td><code>#gt</code></td> <td>Is after a specified date.</td> <td><code>{\"#gt\":{\"birthDate\":\"1987-07-10\"}}</code></td> </tr> <tr> <td><code>#gte</code></td> <td>Is after or equal to a specified date.</td> <td><code>{\"#gte\":{\"birthDate\":\"1987-07-10\"}}</code></td> </tr> <tr> <td><code>#in</code></td> <td>Is equal to one of dates in a given list.</td> <td><code>{\"#in\":{\"birthDate\":[\"1987-07-10\",\"1987-07-11\"]}}</code></td> </tr> <tr> <td><code>#notIn</code></td> <td>Is not equal to any of dates in a given list.</td> <td><code>{\"#notIn\":{\"birthDate\":[\"1987-07-10\",\"1987-07-11\"]}}</code></td> </tr> <thead> <tr> <th>Integers</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#eq</code></td> <td>Equals to a specified integer.</td> <td><code>{\"data\\u0001counter\":1}</code></td> </tr> <tr> <td><code>#ne</code></td> <td>Not equal to a specified integer.</td> <td><code>{\"#ne\":{\"data\\u0001counter\":1}}</code></td> </tr> <tr> <td><code>#lt</code></td> <td>Is less than a specified integer.</td> <td><code>{\"#lt\":{\"data\\u0001counter\":1}}</code></td> </tr> <tr> <td><code>#lte</code></td> <td>Is less than or equal to a specified integer.</td> <td><code>{\"#lte\":{\"data\\u0001counter\":1}}</code></td> </tr> <tr> <td><code>#gt</code></td> <td>Is greater than a specified integer.</td> <td><code>{\"#gt\":{\"data\\u0001counter\":1}}</code></td> </tr> <tr> <td><code>#gte</code></td> <td>Is greater than or equal to a specified integer.</td> <td><code>{\"#gte\":{\"data\\u0001counter\":1}}</code></td> </tr> <tr> <td><code>#in</code></td> <td>Is equal to any of specified integers in a list.</td> <td><code>{\"#in\":{\"data\\u0001counter\":[1,2,3]}}</code></td> </tr> <tr> <td><code>#notIn</code></td> <td>Is not equal to any of specified integers in a list.</td> <td><code>{\"#notIn\":{\"data\\u0001counter\":[1,2,3]}}</code></td> </tr> <thead> <tr> <th>Decimals</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#eq</code></td> <td>Equals to a specified decimal.</td> <td><code>{\"data\\u0001price\":1.1}</code></td> </tr> <tr> <td><code>#ne</code></td> <td>Is not equal to a specified decimal.</td> <td><code>{\"#ne\":{\"data\\u0001price\":1.1}}</code></td> </tr> <tr> <td><code>#lt</code></td> <td>Is less than a specified decimal.</td> <td><code>{\"#lt\":{\"data\\u0001price\":1.1}}</code></td> </tr> <tr> <td><code>#lte</code></td> <td>Is less than or equal to a specified decimal.</td> <td><code>{\"#lte\":{\"data\\u0001price\":1.1}}</code></td> </tr> <tr> <td><code>#gt</code></td> <td>Is greater than a specified decimal.</td> <td><code>{\"#gt\":{\"data\\u0001price\":1.1}}</code></td> </tr> <tr> <td><code>#gte</code></td> <td>Is greater than or equal to a specified decimal.</td> <td><code>{\"#gte\":{\"data\\u0001price\":1.1}}</code></td> </tr> <tr> <td><code>#in</code></td> <td>Is equal to any of specified decimals in a list.</td> <td><code>{\"#in\":{\"data\\u0001price\":[1.1,2.1,3.0]}}</code></td> </tr> <tr> <td><code>#notIn</code></td> <td>Is not equal to any of specified decimals in a list.</td> <td><code>{\"#notIn\":{\"data\\u0001price\":[1.1,2.1,3.0]}}</code></td> </tr> <thead> <tr> <th>Booleans</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#eq</code></td> <td>Equals to a specified boolean.</td> <td><code>{\"data\\u0001happy\":true}</code></td> </tr> <tr> <td><code>#ne</code></td> <td>Not equal to a specified boolean.</td> <td><code>{\"#ne\":{\"data\\u0001happy\":true}}</code></td> </tr> <thead> <tr> <th>Tags</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#contains</code></td> <td>Contains a specified tag.</td> <td><code>{\"#contains\":{\"tags\":\"SOME_TAG\"}}</code></td> </tr> <tr> <td><code>#notContain</code></td> <td>Does not contain a specified tag.</td> <td><code>{\"#notContain\":{\"tags\":\"SOME_TAG\"}}</code></td> </tr> <thead> <tr> <th>Gender</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#eq</code></td> <td>Equals a specified gender.</td> <td><code>{\"gender\":\"MALE\"}</code></td> </tr> <tr> <td><code>#ne</code></td> <td>Does not equal a specified gender.</td> <td><code>{\"#ne\":{\"gender\":\"FEMALE\"}}</code></td> </tr> <thead> <tr> <th>Lists</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#all</code></td> <td>All items in the list match.</td> <td><code>{\"#all\":{\"data\\u0001Cart\":{\"#and\":[{\"ProductName\":\"Laptop\"},{\"ProductPrice\":2000}]}}}</code> </td> </tr> <tr> <td><code>#any</code></td> <td>Any item in the list match.</td> <td><code>{\"#any\":{\"data\\u0001Cart\":{\"#and\":[{\"ProductName\":\"Laptop\"},{\"ProductPrice\":2000}]}}}</code> </td> </tr> </table></td>\n</tr>\n<tr>\n<td><em>events</em></td>\n<td>Array</td>\n<td>List of events that persons should match.</td>\n</tr>\n<tr>\n<td><em>events[].definitionId</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Event definition ID.</td>\n</tr>\n<tr>\n<td><em>events[].occurrenceCondition</em></td>\n<td>Object</td>\n<td>Specify how many times did the event occur.</td>\n</tr>\n<tr>\n<td><em>events[].occurrenceCondition.operation</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Operation to compare how many times the event has occurred. One of: <code>IS</code>, <code>LESS_THAN</code>, <code>LESS_OR_EQUAL</code>, <code>GREATER_OR_EQUAL</code>, <code>GREATER_THAN</code>.</td>\n</tr>\n<tr>\n<td><em>events[].occurrenceCondition.times</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Number of times the event has occurred.</td>\n</tr>\n<tr>\n<td><em>events[].timelineCondition</em></td>\n<td>Object</td>\n<td><strong>Required.</strong> Specify in which timespan did the event occur.</td>\n</tr>\n<tr>\n<td><em>events[].timelineCondition.occurred</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Specifies whether an event is occurring for the first or last time within a given period. Additionally, we can use an operator to specify if any event has occurred or never occurred within the specified timeframe. One of: <code>ALL</code>, <code>FIRST</code>, <code>LAST</code>, <code>NOT</code>.</td>\n</tr>\n<tr>\n<td><em>events[].timelineCondition.operator</em></td>\n<td>String</td>\n<td><strong>Required.</strong> The operators AFTER, BEFORE, and BETWEEN can be used to specify relative time periods, while their counterparts with the suffix _ABS (e.g., AFTER_ABS, BEFORE_ABS, BETWEEN_ABS) are used for absolute time values. These operators can be applied with start and end attributes to define the beginning and ending points of the time. Units need to be used with relative operators to specify the duration of the time periods. One of: <code>EMPTY</code>, <code>AFTER</code>, <code>BEFORE</code>, <code>BETWEEN</code>, <code>AFTER_ABS</code>, <code>BEFORE_ABS</code>, <code>BETWEEN_ABS</code>.</td>\n</tr>\n<tr>\n<td><em>events[].timelineCondition.start</em></td>\n<td>Int</td>\n<td>Start of timespan: For relative operators, specify the number of units. For absolute operators, provide a Unix timestamp.</td>\n</tr>\n<tr>\n<td><em>events[].timelineCondition.end</em></td>\n<td>Int</td>\n<td>End of timespan: For relative operators, specify the number of units. For absolute operators, provide a Unix timestamp.</td>\n</tr>\n<tr>\n<td><em>events[].timelineCondition.units</em></td>\n<td>String</td>\n<td>Time units for relative operators. One of: <code>DAYS</code>, <code>HOURS</code>, <code>MINUTES</code>.</td>\n</tr>\n<tr>\n<td><em>events[].payloadConditions</em></td>\n<td>Array</td>\n<td>Specify the conditions of the event payload.</td>\n</tr>\n<tr>\n<td><em>events[].payloadConditions[].attribute</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Event payload attribute.</td>\n</tr>\n<tr>\n<td><em>events[].payloadConditions[].operator</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Operator for comparing condition value with payload value. One of: <code>EQ</code>, <code>LT</code>, <code>LTE</code>, <code>GT</code>, <code>GTE</code>, <code>NE</code>, <code>SW</code>, <code>EW</code>, <code>CON</code>.</td>\n</tr>\n<tr>\n<td><em>events[].payloadConditions[].value</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Payload condition value.</td>\n</tr>\n<tr>\n<td><em>createdAt</em></td>\n<td>String</td>\n<td>Date and time of creation. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSSZ</code>.</td>\n</tr>\n<tr>\n<td><em>modifiedAt</em></td>\n<td>String</td>\n<td>Date and time of last modification. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSSZ</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["people","3","segments","{{segmentId}}"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"ab1b72c0-1a01-46ab-a495-c57622f9a888","name":"200 OK","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/people/3/segments/{{segmentId}}"},"status":"OK","code":200,"_postman_previewlanguage":"text","header":null,"cookie":[],"responseTime":null,"body":null},{"id":"a8a48ed6-740a-48d3-a013-58508919b9d7","name":"400 - real VHD response","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/people/3/segments/{{segmentId}}"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E400\",\n  \"description\": \"Request cannot be processed.\",\n  \"action\": \"Check the syntax, violations and adjust the request.\",\n  \"violations\": [\n    {\n      \"property\": \"name\",\n      \"violation\": \"Invalid type\"\n    }\n  ],\n  \"resources\": []\n}"},{"id":"6475d962-d7b1-4461-a51e-b2a49af9781e","name":"401 - Example","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/people/3/segments/{{segmentId}}"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E401\",\n  \"description\": \"The request lacks valid authentication credentials for the requested resource.\",\n  \"action\": \"Check the resources and adjust authentication credentials.\",\n  \"violations\": [],\n  \"resources\": [\n    {\n      \"name\": \"API Authentication\",\n      \"url\": \"https://www.vhd.com/docs/essentials/api-authentication\"\n    }\n  ]\n}"},{"id":"e7bce10d-dc39-496f-a3d7-5ccca84797bd","name":"403 - Example","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/people/3/segments/{{segmentId}}"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E403\",\n  \"description\": \"Insufficient permissions to access the requested resource.\",\n  \"action\": \"Repeat the request with new or different credentials.\",\n  \"violations\": [],\n  \"resources\": [\n    {\n      \"name\": \"API Scopes\",\n      \"url\": \"https://www.vhd.com/docs/essentials/api-essentials/api-authorization#api-scopes\"\n    }\n  ]\n}"},{"id":"8f15d405-f61b-4a34-9ed8-95f618ce43f9","name":"404 - Example","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/people/3/segments/{{segmentId}}"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E404\",\n  \"description\": \"Not found - request URL doesn't exist on the API server or resource is not found.\",\n  \"action\": \"Check the resources and adjust your request.\",\n  \"violations\": [],\n  \"resources\": []\n}"},{"id":"fcb58d2a-a0ea-4ad3-b02e-01ab4c1e6375","name":"429 - Example","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/people/3/segments/{{segmentId}}"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E429\",\n  \"description\": \"Too many requests sent.\",\n  \"action\": \"Check request rate limit specified in the API endpoint documentation resource.\",\n  \"violations\": [],\n  \"resources\": [\n    {\n      \"name\": \"Throttling handling errors\",\n      \"url\": \"https://www.vhd.com/docs/essentials/integration-best-practices#throttling-handling-errors\"\n    }\n  ]\n}"},{"id":"5da9fb89-221f-4445-a11c-65d9698d276f","name":"500 - Example","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/people/3/segments/{{segmentId}}"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E500\",\n  \"description\": \"Something went wrong.\",\n  \"action\": \"Contact the support.\",\n  \"violations\": [],\n  \"resources\": []\n}"}],"_postman_id":"35dc3d6b-96ab-4fdf-ba09-9f2d206ae4f8"},{"name":"Get persons in a segment","event":[{"listen":"test","script":{"exec":["// Tests for Get persons in a segment.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var res;","pm.test(\"Response body is valid JSON\", function () { res = pm.response.json(); });","","pm.test(\"Response contains 'results' array and 'paging'\", function () {","    pm.expect(res).to.have.property('results').that.is.an('array');","    pm.expect(res).to.have.property('paging');","    pm.expect(res.paging).to.include.all.keys('page', 'size', 'totalPages', 'totalResults');","});",""],"type":"text/javascript","packages":{}}}],"id":"6cc260ba-7436-4194-9308-7f75a99c21f9","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/people/3/segments/{{segmentId}}/persons","description":"<p>Get persons in a segment.</p>\n<p>Use this method to get persons in a segment by ID.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>segmentId</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> A unique segment identifier.</td>\n</tr>\n<tr>\n<td><em>page</em></td>\n<td>Int</td>\n<td>Zero-based page index (0..N). Default: <code>0</code>.</td>\n</tr>\n<tr>\n<td><em>size</em></td>\n<td>Int</td>\n<td>The size of the page to be returned. Default: <code>20</code>.</td>\n</tr>\n<tr>\n<td><em>sort</em></td>\n<td>Array</td>\n<td>Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> The list of the results for this page.</td>\n</tr>\n<tr>\n<td><em>results[].id</em></td>\n<td>Int</td>\n<td>Unique id of the entity.</td>\n</tr>\n<tr>\n<td><em>results[].externalId</em></td>\n<td>String</td>\n<td>Unique ID for a person from your or another external system, 256 characters max.</td>\n</tr>\n<tr>\n<td><em>results[].type</em></td>\n<td>String</td>\n<td>Person's type, default type is CUSTOMER. One of: <code>CUSTOMER</code>, <code>LEAD</code>.</td>\n</tr>\n<tr>\n<td><em>results[].firstName</em></td>\n<td>String</td>\n<td>Person's first name, 255 characters max.</td>\n</tr>\n<tr>\n<td><em>results[].middleName</em></td>\n<td>String</td>\n<td>Person's middle name, 50 characters max.</td>\n</tr>\n<tr>\n<td><em>results[].lastName</em></td>\n<td>String</td>\n<td>Person's last name, 255 characters max.</td>\n</tr>\n<tr>\n<td><em>results[].nickName</em></td>\n<td>String</td>\n<td>Person's nick name, 50 characters max.</td>\n</tr>\n<tr>\n<td><em>results[].country</em></td>\n<td>String</td>\n<td>Person's country, 50 characters max.</td>\n</tr>\n<tr>\n<td><em>results[].city</em></td>\n<td>String</td>\n<td>Person's city, 50 characters max.</td>\n</tr>\n<tr>\n<td><em>results[].address</em></td>\n<td>String</td>\n<td>Person's address, 256 characters max.</td>\n</tr>\n<tr>\n<td><em>results[].gender</em></td>\n<td>String</td>\n<td>Person's gender. One of: <code>MALE</code>, <code>FEMALE</code>.</td>\n</tr>\n<tr>\n<td><em>results[].preferredLanguage</em></td>\n<td>String</td>\n<td>Person's preferred language. Must be in two letter ISO (xx) or language-region BCP-47 (xx-YY) format.</td>\n</tr>\n<tr>\n<td><em>results[].birthDate</em></td>\n<td>String</td>\n<td>Person's date of birth, format <code>YYYY-MM-DD</code>.</td>\n</tr>\n<tr>\n<td><em>results[].profilePicture</em></td>\n<td>String</td>\n<td>URL for the person's profile picture, 2083 characters max.</td>\n</tr>\n<tr>\n<td><em>results[].tags</em></td>\n<td>Array</td>\n<td>List of tags that this person has.</td>\n</tr>\n<tr>\n<td><em>results[].contactInformation</em></td>\n<td>Array</td>\n<td>List of phones, emails and other information how a person can be contacted.</td>\n</tr>\n<tr>\n<td><em>results[].contactInformation[].type</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Type of the person ID One of: <code>PHONE</code>, <code>EMAIL</code>, <code>FACEBOOK</code>, <code>LINE</code>, <code>TELEGRAM</code>, <code>PUSH</code>, <code>WEB_PUSH</code>, <code>LIVE_CHAT</code>, <code>VIBER_BOTS</code>, <code>INSTAGRAM</code>, <code>TWITTER</code>, <code>INSTAGRAM_DM</code>, <code>KAKAO_SANGDAM</code>, <code>APPLE_BUSINESS_CHAT</code>, <code>OPEN_CHANNEL</code>, <code>ZALO_FOLLOWER</code>, <code>TIKTOK_BM</code>, <code>WHATSAPP</code>, <code>KAKAO_TALK</code>.</td>\n</tr>\n<tr>\n<td><em>results[].contactInformation[].identifier</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Person ID. ID type must match the type parameter. Some channels (e,g., Apple Business Chat) use identifiers that contain unsafe characters. Make sure you URL-encode them in your API request. 255 characters max.</td>\n</tr>\n<tr>\n<td><em>results[].contactInformation[].sender</em></td>\n<td>String</td>\n<td>Sender or application ID. Sender is required for all identifier types except PHONE and EMAIL. 255 characters max.</td>\n</tr>\n<tr>\n<td><em>results[].contactInformation[].primary</em></td>\n<td>Boolean</td>\n<td>Indicates if this ID is preferred for communication.</td>\n</tr>\n<tr>\n<td><em>results[].customAttributes</em></td>\n<td>Object</td>\n<td>List of custom attributes for the person, 4096 characters max per value.</td>\n</tr>\n<tr>\n<td><em>results[].computedAttributes</em></td>\n<td>Object</td>\n<td>Person's computed attributes grouped by type.</td>\n</tr>\n<tr>\n<td><em>results[].createdFrom</em></td>\n<td>String</td>\n<td>Source system that last modified this person record. One of: <code>API</code>, <code>PORTAL</code>, <code>WEB_SDK</code>, <code>INTEGRATION</code>, <code>PUSH</code>, <code>FACEBOOK</code>, <code>LINE</code>, <code>TELEGRAM</code>, <code>SALESFORCE</code>, <code>DYNAMICS</code>, <code>ZAPIER</code>, <code>FORMS</code>, <code>AMS</code>, <code>COMPUTED</code>, <code>ANSWERS</code>, <code>CONVERSATIONS</code>, <code>IMPORT</code>, <code>INSTAGRAM_DM</code>, <code>FLOW</code>, <code>LIVE_CHAT</code>, <code>VKONTAKTE</code>, <code>ZALO_FOLLOWER</code>, <code>TIKTOK_BM</code>, <code>WHATSAPP</code>, <code>KAKAO_TALK</code>, <code>UNKNOWN</code>.</td>\n</tr>\n<tr>\n<td><em>results[].createdBy</em></td>\n<td>String</td>\n<td>Identifier of the user who created this person record.</td>\n</tr>\n<tr>\n<td><em>results[].createdAt</em></td>\n<td>String</td>\n<td>Date and time of creation. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td><em>results[].modifiedFrom</em></td>\n<td>String</td>\n<td>Source system that last modified this person record. One of: <code>API</code>, <code>PORTAL</code>, <code>WEB_SDK</code>, <code>INTEGRATION</code>, <code>PUSH</code>, <code>FACEBOOK</code>, <code>LINE</code>, <code>TELEGRAM</code>, <code>SALESFORCE</code>, <code>DYNAMICS</code>, <code>ZAPIER</code>, <code>FORMS</code>, <code>AMS</code>, <code>COMPUTED</code>, <code>ANSWERS</code>, <code>CONVERSATIONS</code>, <code>IMPORT</code>, <code>INSTAGRAM_DM</code>, <code>FLOW</code>, <code>LIVE_CHAT</code>, <code>VKONTAKTE</code>, <code>ZALO_FOLLOWER</code>, <code>TIKTOK_BM</code>, <code>WHATSAPP</code>, <code>KAKAO_TALK</code>, <code>UNKNOWN</code>.</td>\n</tr>\n<tr>\n<td><em>results[].modifiedBy</em></td>\n<td>String</td>\n<td>Identifier of the user who last modified this person record.</td>\n</tr>\n<tr>\n<td><em>results[].modifiedAt</em></td>\n<td>String</td>\n<td>Date and time of last modification. Has the following format: yyyy-MM-dd'T'HH:mm:ss.</td>\n</tr>\n<tr>\n<td><em>paging</em></td>\n<td>Object</td>\n<td><strong>Required.</strong> Contains information about the page.</td>\n</tr>\n<tr>\n<td><em>paging.page</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Requested page number.</td>\n</tr>\n<tr>\n<td><em>paging.size</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Requested page size.</td>\n</tr>\n<tr>\n<td><em>paging.totalPages</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> The total number of pages of the results matching the requested parameters.</td>\n</tr>\n<tr>\n<td><em>paging.totalResults</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> The total number of the results matching the requested parameters.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["people","3","segments","{{segmentId}}","persons"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"08ac80fe-8119-495d-96ef-0f881029f93f","name":"200 OK","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/segments/{{segmentId}}/persons","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","segments","{{segmentId}}","persons"],"query":[{"key":"page","value":"","description":"Zero-based page index (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"The size of the page to be returned. Default: `20`.","disabled":true},{"key":"sort","value":"","description":"Sorting criteria in the format: property,(asc\\|desc). Default sort order is ascending. Multiple sort criteria are supported.","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"text","header":null,"cookie":[],"responseTime":null,"body":null},{"id":"941ce372-c985-4b32-ba8c-6c0e70f6c2fe","name":"401 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/segments/{{segmentId}}/persons","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","segments","{{segmentId}}","persons"],"query":[{"key":"page","value":"","description":"Zero-based page index (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"The size of the page to be returned. Default: `20`.","disabled":true},{"key":"sort","value":"","description":"Sorting criteria in the format: property,(asc\\|desc). Default sort order is ascending. Multiple sort criteria are supported.","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E401\",\n  \"description\": \"The request lacks valid authentication credentials for the requested resource.\",\n  \"action\": \"Check the resources and adjust authentication credentials.\",\n  \"violations\": [],\n  \"resources\": [\n    {\n      \"name\": \"API Authentication\",\n      \"url\": \"https://www.vhd.com/docs/essentials/api-authentication\"\n    }\n  ]\n}"},{"id":"b79db8fc-1996-49e7-9abc-70d1e50b4b95","name":"403 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/segments/{{segmentId}}/persons","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","segments","{{segmentId}}","persons"],"query":[{"key":"page","value":"","description":"Zero-based page index (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"The size of the page to be returned. Default: `20`.","disabled":true},{"key":"sort","value":"","description":"Sorting criteria in the format: property,(asc\\|desc). Default sort order is ascending. Multiple sort criteria are supported.","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E403\",\n  \"description\": \"Insufficient permissions to access the requested resource.\",\n  \"action\": \"Repeat the request with new or different credentials.\",\n  \"violations\": [],\n  \"resources\": [\n    {\n      \"name\": \"API Scopes\",\n      \"url\": \"https://www.vhd.com/docs/essentials/api-essentials/api-authorization#api-scopes\"\n    }\n  ]\n}"},{"id":"f7cc5e9a-11b8-458b-985b-b9f7bcf0c5a8","name":"404 - real VHD response","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/segments/{{segmentId}}/persons","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","segments","{{segmentId}}","persons"],"query":[{"key":"page","value":"","description":"Zero-based page index (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"The size of the page to be returned. Default: `20`.","disabled":true},{"key":"sort","value":"","description":"Sorting criteria in the format: property,(asc\\|desc). Default sort order is ascending. Multiple sort criteria are supported.","disabled":true}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E404\",\n  \"description\": \"Not found - request URL doesn't exist on the API server or resource is not found.\",\n  \"action\": \"Check the resources and adjust your request.\",\n  \"violations\": [\n    {\n      \"violation\": \"Segment with given id does not exist.\"\n    }\n  ],\n  \"resources\": []\n}"},{"id":"6f42e0e6-c6f6-4e7e-b244-95e79cf2f1fa","name":"429 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/segments/{{segmentId}}/persons","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","segments","{{segmentId}}","persons"],"query":[{"key":"page","value":"","description":"Zero-based page index (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"The size of the page to be returned. Default: `20`.","disabled":true},{"key":"sort","value":"","description":"Sorting criteria in the format: property,(asc\\|desc). Default sort order is ascending. Multiple sort criteria are supported.","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E429\",\n  \"description\": \"Too many requests sent.\",\n  \"action\": \"Check request rate limit specified in the API endpoint documentation resource.\",\n  \"violations\": [],\n  \"resources\": [\n    {\n      \"name\": \"Throttling handling errors\",\n      \"url\": \"https://www.vhd.com/docs/essentials/integration-best-practices#throttling-handling-errors\"\n    }\n  ]\n}"},{"id":"31bfa3f5-5dc6-4016-b7a8-cc8edcb890bf","name":"500 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/segments/{{segmentId}}/persons","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","segments","{{segmentId}}","persons"],"query":[{"key":"page","value":"","description":"Zero-based page index (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"The size of the page to be returned. Default: `20`.","disabled":true},{"key":"sort","value":"","description":"Sorting criteria in the format: property,(asc\\|desc). Default sort order is ascending. Multiple sort criteria are supported.","disabled":true}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E500\",\n  \"description\": \"Something went wrong.\",\n  \"action\": \"Contact the support.\",\n  \"violations\": [],\n  \"resources\": []\n}"}],"_postman_id":"6cc260ba-7436-4194-9308-7f75a99c21f9"},{"name":"Get a list of segments","event":[{"listen":"test","script":{"exec":["// Tests for Get a list of segments.","pm.test(\"Status code is 200\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var res;","pm.test(\"Response body is valid JSON\", function () { res = pm.response.json(); });","","pm.test(\"Response contains 'results' array and 'paging'\", function () {","    pm.expect(res).to.have.property('results').that.is.an('array');","    pm.expect(res).to.have.property('paging');","    pm.expect(res.paging).to.include.all.keys('page', 'size', 'totalPages', 'totalResults');","});","","pm.test(\"Each segment has an id and a name\", function () {","    res.results.forEach(function (s) {","        pm.expect(s).to.have.property('id');","        pm.expect(s).to.have.property('name').that.is.a('string');","    });","});",""],"type":"text/javascript","packages":{}}}],"id":"799ca5d2-ccfd-4a8c-99da-e1320d49d4f0","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/people/3/segments","description":"<p>Get a list of segments.</p>\n<p>Use this method to get a list of segments.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>page</em></td>\n<td>Int</td>\n<td>Zero-based page index (0..N). Default: <code>0</code>.</td>\n</tr>\n<tr>\n<td><em>size</em></td>\n<td>Int</td>\n<td>The size of the page to be returned. Default: <code>20</code>.</td>\n</tr>\n<tr>\n<td><em>sort</em></td>\n<td>Array</td>\n<td>Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> The list of the results for this page.</td>\n</tr>\n<tr>\n<td><em>results[].id</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> A unique segment identifier.</td>\n</tr>\n<tr>\n<td><em>results[].name</em></td>\n<td>String</td>\n<td><strong>Required.</strong> A unique segment name.</td>\n</tr>\n<tr>\n<td><em>results[].description</em></td>\n<td>String</td>\n<td>Segment description.</td>\n</tr>\n<tr>\n<td><em>results[].query</em></td>\n<td>Object</td>\n<td>Allows to filter persons using simple queries. ##### Supported logical operators <table> <thead> <tr> <th>Operator</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#and</code></td> <td>All records that match the conditions of all clauses.</td> <td><code>{\"#and\":[{\"firstName\":\"John\"},{\"lastName\":\"Smith\"}]}</code></td> </tr> <tr> <td><code>#or</code></td> <td>All records that match the conditions of any clause.</td> <td><code>{\"#or\":[{\"firstName\":\"John\"},{\"firstName\":\"Jane\"}]}</code></td> </tr> </table> ##### Supported comparison operators <table> <thead> <tr> <th>Attributes</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#notExist</code></td> <td>Matches records that do not have given attribute.</td> <td><code>{\"#notExist\":\"firstName\"}</code></td> </tr> <tr> <td><code>#exist</code></td> <td>Matches records that have given attribute.</td> <td><code>{\"#exists\":\"firstName\"}</code></td> </tr> <thead> <tr> <th>Strings</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#eq</code></td> <td>Equals to a specified string.</td> <td><code>{\"firstName\":\"John\"}</code></td> </tr> <tr> <td><code>#ne</code></td> <td>Not equal to a specified string.</td> <td><code>{\"#ne\":{\"firstName\":\"John\"}}</code></td> </tr> <tr> <td><code>#startsWith</code></td> <td>Starts with a specified string.</td> <td><code>{\"#startsWith\":{\"firstName\":\"John\"}}</code></td> </tr> <tr> <td><code>#endsWith</code></td> <td>Ends with a specified string.</td> <td><code>{\"#endsWith\":{\"firstName\":\"John\"}}</code></td> </tr> <tr> <td><code>#contains</code></td> <td>Contains a specified string.</td> <td><code>{\"#contains\":{\"firstName\":\"oh\"}}</code></td> </tr> <tr> <td><code>#notContain</code></td> <td>Does not contain a specified string.</td> <td><code>{\"#notContain\":{\"firstName\":\"oh\"}}</code></td> </tr> <tr> <td><code>#in</code></td> <td>At least one of the strings in a list.</td> <td><code>{\"#in\":{\"firstName\":[\"John\",\"Jane\"]}}</code></td> </tr> <tr> <td><code>#notIn</code></td> <td>Not any of the strings in a list.</td> <td><code>{\"#notIn\":{\"firstName\":[\"John\",\"Jane\"]}}</code></td> </tr> <thead> <tr> <th>Dates</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#eq</code></td> <td>Equals to a specified date.</td> <td><code>{\"birthDate\":\"1987-07-10\"}</code></td> </tr> <tr> <td><code>#ne</code></td> <td>Not equal to a specified date.</td> <td><code>{\"#ne\":{\"birthDate\":\"1987-07-10\"}}</code></td> </tr> <tr> <td><code>#eq (relative)</code></td> <td>Will be in specified interval.</td> <td><code>{\"#eq\":{\"birthDate\":{\"#relNow\":\"P1D\"}}}</code></td> </tr> <tr> <td><code>#lt (relative)</code></td> <td>Will be within a specified interval.</td> <td><code>{\"#lt\":{\"birthDate\":{\"#relNow\":\"P1D\"}}}</code></td> </tr> <tr> <td><code>#gt (relative)</code></td> <td>Will be in more than a specified interval.</td> <td><code>{\"#gt\":{\"birthDate\":{\"#relNow\":\"P1D\"}}}</code></td> </tr> <tr> <td><code>#eq (relative) -</code></td> <td>Was a specified interval ago.</td> <td><code>{\"#eq\":{\"birthDate\":{\"#relNow\":\"P-1D\"}}}</code></td> </tr> <tr> <td><code>#gt (relative) -</code></td> <td>Was within a specified interval ago.</td> <td><code>{\"#gt\":{\"birthDate\":{\"#relNow\":\"P-1D\"}}}</code></td> </tr> <tr> <td><code>#gt (relative) -</code></td> <td>Was more than a specified interval ago.</td> <td><code>{\"#gt\":{\"birthDate\":{\"#relNow\":\"P-1D\"}}}</code></td> </tr> <tr> <td><code>#lt</code></td> <td>Is before a specified date.</td> <td><code>{\"#lt\":{\"birthDate\":\"1987-07-10\"}}</code></td> </tr> <tr> <td><code>#lte</code></td> <td>Is before or equal to a specified date.</td> <td><code>{\"#lte\":{\"birthDate\":\"1987-07-10\"}}</code></td> </tr> <tr> <td><code>#gt</code></td> <td>Is after a specified date.</td> <td><code>{\"#gt\":{\"birthDate\":\"1987-07-10\"}}</code></td> </tr> <tr> <td><code>#gte</code></td> <td>Is after or equal to a specified date.</td> <td><code>{\"#gte\":{\"birthDate\":\"1987-07-10\"}}</code></td> </tr> <tr> <td><code>#in</code></td> <td>Is equal to one of dates in a given list.</td> <td><code>{\"#in\":{\"birthDate\":[\"1987-07-10\",\"1987-07-11\"]}}</code></td> </tr> <tr> <td><code>#notIn</code></td> <td>Is not equal to any of dates in a given list.</td> <td><code>{\"#notIn\":{\"birthDate\":[\"1987-07-10\",\"1987-07-11\"]}}</code></td> </tr> <thead> <tr> <th>Integers</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#eq</code></td> <td>Equals to a specified integer.</td> <td><code>{\"data\\u0001counter\":1}</code></td> </tr> <tr> <td><code>#ne</code></td> <td>Not equal to a specified integer.</td> <td><code>{\"#ne\":{\"data\\u0001counter\":1}}</code></td> </tr> <tr> <td><code>#lt</code></td> <td>Is less than a specified integer.</td> <td><code>{\"#lt\":{\"data\\u0001counter\":1}}</code></td> </tr> <tr> <td><code>#lte</code></td> <td>Is less than or equal to a specified integer.</td> <td><code>{\"#lte\":{\"data\\u0001counter\":1}}</code></td> </tr> <tr> <td><code>#gt</code></td> <td>Is greater than a specified integer.</td> <td><code>{\"#gt\":{\"data\\u0001counter\":1}}</code></td> </tr> <tr> <td><code>#gte</code></td> <td>Is greater than or equal to a specified integer.</td> <td><code>{\"#gte\":{\"data\\u0001counter\":1}}</code></td> </tr> <tr> <td><code>#in</code></td> <td>Is equal to any of specified integers in a list.</td> <td><code>{\"#in\":{\"data\\u0001counter\":[1,2,3]}}</code></td> </tr> <tr> <td><code>#notIn</code></td> <td>Is not equal to any of specified integers in a list.</td> <td><code>{\"#notIn\":{\"data\\u0001counter\":[1,2,3]}}</code></td> </tr> <thead> <tr> <th>Decimals</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#eq</code></td> <td>Equals to a specified decimal.</td> <td><code>{\"data\\u0001price\":1.1}</code></td> </tr> <tr> <td><code>#ne</code></td> <td>Is not equal to a specified decimal.</td> <td><code>{\"#ne\":{\"data\\u0001price\":1.1}}</code></td> </tr> <tr> <td><code>#lt</code></td> <td>Is less than a specified decimal.</td> <td><code>{\"#lt\":{\"data\\u0001price\":1.1}}</code></td> </tr> <tr> <td><code>#lte</code></td> <td>Is less than or equal to a specified decimal.</td> <td><code>{\"#lte\":{\"data\\u0001price\":1.1}}</code></td> </tr> <tr> <td><code>#gt</code></td> <td>Is greater than a specified decimal.</td> <td><code>{\"#gt\":{\"data\\u0001price\":1.1}}</code></td> </tr> <tr> <td><code>#gte</code></td> <td>Is greater than or equal to a specified decimal.</td> <td><code>{\"#gte\":{\"data\\u0001price\":1.1}}</code></td> </tr> <tr> <td><code>#in</code></td> <td>Is equal to any of specified decimals in a list.</td> <td><code>{\"#in\":{\"data\\u0001price\":[1.1,2.1,3.0]}}</code></td> </tr> <tr> <td><code>#notIn</code></td> <td>Is not equal to any of specified decimals in a list.</td> <td><code>{\"#notIn\":{\"data\\u0001price\":[1.1,2.1,3.0]}}</code></td> </tr> <thead> <tr> <th>Booleans</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#eq</code></td> <td>Equals to a specified boolean.</td> <td><code>{\"data\\u0001happy\":true}</code></td> </tr> <tr> <td><code>#ne</code></td> <td>Not equal to a specified boolean.</td> <td><code>{\"#ne\":{\"data\\u0001happy\":true}}</code></td> </tr> <thead> <tr> <th>Tags</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#contains</code></td> <td>Contains a specified tag.</td> <td><code>{\"#contains\":{\"tags\":\"SOME_TAG\"}}</code></td> </tr> <tr> <td><code>#notContain</code></td> <td>Does not contain a specified tag.</td> <td><code>{\"#notContain\":{\"tags\":\"SOME_TAG\"}}</code></td> </tr> <thead> <tr> <th>Gender</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#eq</code></td> <td>Equals a specified gender.</td> <td><code>{\"gender\":\"MALE\"}</code></td> </tr> <tr> <td><code>#ne</code></td> <td>Does not equal a specified gender.</td> <td><code>{\"#ne\":{\"gender\":\"FEMALE\"}}</code></td> </tr> <thead> <tr> <th>Lists</th> <th>Description</th> <th>Example</th> </tr> </thead> <tr> <td><code>#all</code></td> <td>All items in the list match.</td> <td><code>{\"#all\":{\"data\\u0001Cart\":{\"#and\":[{\"ProductName\":\"Laptop\"},{\"ProductPrice\":2000}]}}}</code> </td> </tr> <tr> <td><code>#any</code></td> <td>Any item in the list match.</td> <td><code>{\"#any\":{\"data\\u0001Cart\":{\"#and\":[{\"ProductName\":\"Laptop\"},{\"ProductPrice\":2000}]}}}</code> </td> </tr> </table></td>\n</tr>\n<tr>\n<td><em>results[].events</em></td>\n<td>Array</td>\n<td>List of events that persons should match.</td>\n</tr>\n<tr>\n<td><em>results[].events[].definitionId</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Event definition ID.</td>\n</tr>\n<tr>\n<td><em>results[].events[].occurrenceCondition</em></td>\n<td>Object</td>\n<td>Specify how many times did the event occur.</td>\n</tr>\n<tr>\n<td><em>results[].events[].occurrenceCondition.operation</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Operation to compare how many times the event has occurred. One of: <code>IS</code>, <code>LESS_THAN</code>, <code>LESS_OR_EQUAL</code>, <code>GREATER_OR_EQUAL</code>, <code>GREATER_THAN</code>.</td>\n</tr>\n<tr>\n<td><em>results[].events[].occurrenceCondition.times</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Number of times the event has occurred.</td>\n</tr>\n<tr>\n<td><em>results[].events[].timelineCondition</em></td>\n<td>Object</td>\n<td><strong>Required.</strong> Specify in which timespan did the event occur.</td>\n</tr>\n<tr>\n<td><em>results[].events[].timelineCondition.occurred</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Specifies whether an event is occurring for the first or last time within a given period. Additionally, we can use an operator to specify if any event has occurred or never occurred within the specified timeframe. One of: <code>ALL</code>, <code>FIRST</code>, <code>LAST</code>, <code>NOT</code>.</td>\n</tr>\n<tr>\n<td><em>results[].events[].timelineCondition.operator</em></td>\n<td>String</td>\n<td><strong>Required.</strong> The operators AFTER, BEFORE, and BETWEEN can be used to specify relative time periods, while their counterparts with the suffix _ABS (e.g., AFTER_ABS, BEFORE_ABS, BETWEEN_ABS) are used for absolute time values. These operators can be applied with start and end attributes to define the beginning and ending points of the time. Units need to be used with relative operators to specify the duration of the time periods. One of: <code>EMPTY</code>, <code>AFTER</code>, <code>BEFORE</code>, <code>BETWEEN</code>, <code>AFTER_ABS</code>, <code>BEFORE_ABS</code>, <code>BETWEEN_ABS</code>.</td>\n</tr>\n<tr>\n<td><em>results[].events[].timelineCondition.start</em></td>\n<td>Int</td>\n<td>Start of timespan: For relative operators, specify the number of units. For absolute operators, provide a Unix timestamp.</td>\n</tr>\n<tr>\n<td><em>results[].events[].timelineCondition.end</em></td>\n<td>Int</td>\n<td>End of timespan: For relative operators, specify the number of units. For absolute operators, provide a Unix timestamp.</td>\n</tr>\n<tr>\n<td><em>results[].events[].timelineCondition.units</em></td>\n<td>String</td>\n<td>Time units for relative operators. One of: <code>DAYS</code>, <code>HOURS</code>, <code>MINUTES</code>.</td>\n</tr>\n<tr>\n<td><em>results[].events[].payloadConditions</em></td>\n<td>Array</td>\n<td>Specify the conditions of the event payload.</td>\n</tr>\n<tr>\n<td><em>results[].events[].payloadConditions[].attribute</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Event payload attribute.</td>\n</tr>\n<tr>\n<td><em>results[].events[].payloadConditions[].operator</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Operator for comparing condition value with payload value. One of: <code>EQ</code>, <code>LT</code>, <code>LTE</code>, <code>GT</code>, <code>GTE</code>, <code>NE</code>, <code>SW</code>, <code>EW</code>, <code>CON</code>.</td>\n</tr>\n<tr>\n<td><em>results[].events[].payloadConditions[].value</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Payload condition value.</td>\n</tr>\n<tr>\n<td><em>results[].createdAt</em></td>\n<td>String</td>\n<td>Date and time of creation. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSSZ</code>.</td>\n</tr>\n<tr>\n<td><em>results[].modifiedAt</em></td>\n<td>String</td>\n<td>Date and time of last modification. Has the following format: <code>yyyy-MM-dd'T'HH:mm:ss.SSSZ</code>.</td>\n</tr>\n<tr>\n<td><em>paging</em></td>\n<td>Object</td>\n<td><strong>Required.</strong> Contains information about the page.</td>\n</tr>\n<tr>\n<td><em>paging.page</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Requested page number.</td>\n</tr>\n<tr>\n<td><em>paging.size</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Requested page size.</td>\n</tr>\n<tr>\n<td><em>paging.totalPages</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> The total number of pages of the results matching the requested parameters.</td>\n</tr>\n<tr>\n<td><em>paging.totalResults</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> The total number of the results matching the requested parameters.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["people","3","segments"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"515bab07-888a-4bf8-be8e-56947f591eec","name":"200 OK","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/segments","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","segments"],"query":[{"key":"page","value":"","description":"Zero-based page index (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"The size of the page to be returned. Default: `20`.","disabled":true},{"key":"sort","value":"","description":"Sorting criteria in the format: property,(asc\\|desc). Default sort order is ascending. Multiple sort criteria are supported.","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"text","header":null,"cookie":[],"responseTime":null,"body":null},{"id":"a0a6a5e2-00fa-429a-85d1-d2747e3c445a","name":"401 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/segments","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","segments"],"query":[{"key":"page","value":"","description":"Zero-based page index (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"The size of the page to be returned. Default: `20`.","disabled":true},{"key":"sort","value":"","description":"Sorting criteria in the format: property,(asc\\|desc). Default sort order is ascending. Multiple sort criteria are supported.","disabled":true}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E401\",\n  \"description\": \"The request lacks valid authentication credentials for the requested resource.\",\n  \"action\": \"Check the resources and adjust authentication credentials.\",\n  \"violations\": [],\n  \"resources\": [\n    {\n      \"name\": \"API Authentication\",\n      \"url\": \"https://www.vhd.com/docs/essentials/api-authentication\"\n    }\n  ]\n}"},{"id":"a9dd76f2-00df-4b9d-b7de-a8f2c97316b8","name":"403 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/segments","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","segments"],"query":[{"key":"page","value":"","description":"Zero-based page index (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"The size of the page to be returned. Default: `20`.","disabled":true},{"key":"sort","value":"","description":"Sorting criteria in the format: property,(asc\\|desc). Default sort order is ascending. Multiple sort criteria are supported.","disabled":true}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E403\",\n  \"description\": \"Insufficient permissions to access the requested resource.\",\n  \"action\": \"Repeat the request with new or different credentials.\",\n  \"violations\": [],\n  \"resources\": [\n    {\n      \"name\": \"API Scopes\",\n      \"url\": \"https://www.vhd.com/docs/essentials/api-essentials/api-authorization#api-scopes\"\n    }\n  ]\n}"},{"id":"53e52ebe-410c-4253-ae19-9e406a308faa","name":"429 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/segments","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","segments"],"query":[{"key":"page","value":"","description":"Zero-based page index (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"The size of the page to be returned. Default: `20`.","disabled":true},{"key":"sort","value":"","description":"Sorting criteria in the format: property,(asc\\|desc). Default sort order is ascending. Multiple sort criteria are supported.","disabled":true}]}},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E429\",\n  \"description\": \"Too many requests sent.\",\n  \"action\": \"Check request rate limit specified in the API endpoint documentation resource.\",\n  \"violations\": [],\n  \"resources\": [\n    {\n      \"name\": \"Throttling handling errors\",\n      \"url\": \"https://www.vhd.com/docs/essentials/integration-best-practices#throttling-handling-errors\"\n    }\n  ]\n}"},{"id":"7ba4af3d-d819-4d0a-8fee-732e980279d1","name":"500 - Example","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/people/3/segments","protocol":"https","host":["go2","vhdmedia","se"],"path":["people","3","segments"],"query":[{"key":"page","value":"","description":"Zero-based page index (0..N). Default: `0`.","disabled":true},{"key":"size","value":"","description":"The size of the page to be returned. Default: `20`.","disabled":true},{"key":"sort","value":"","description":"Sorting criteria in the format: property,(asc\\|desc). Default sort order is ascending. Multiple sort criteria are supported.","disabled":true}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E500\",\n  \"description\": \"Something went wrong.\",\n  \"action\": \"Contact the support.\",\n  \"violations\": [],\n  \"resources\": []\n}"}],"_postman_id":"799ca5d2-ccfd-4a8c-99da-e1320d49d4f0"},{"name":"Delete a segment","event":[{"listen":"test","script":{"exec":["// Tests generated from the documented example response of this request.","pm.test(\"Status code is 204\", function () {","    pm.expect(pm.response.code).to.be.oneOf([204]);","});","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});"],"type":"text/javascript","packages":{}}}],"id":"815f8500-4bf6-49e1-9479-75b096276f65","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/people/3/segments/{{segmentId}}","description":"<p>Delete a segment.</p>\n<p>Use this method to delete a segment by ID.</p>\n<h3 id=\"parameters\">Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>segmentId</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> A unique segment identifier.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>204 No Content</code>.</p>\n<p>Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>404</code> not found, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["people","3","segments","{{segmentId}}"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"cfe4efb4-b8ec-4723-a7bf-4a6674ef1e90","name":"204 No Content","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/people/3/segments/{{segmentId}}"},"status":"No Content","code":204,"_postman_previewlanguage":"text","header":null,"cookie":[],"responseTime":null,"body":null},{"id":"4683af7b-b062-414e-8085-f4b8e1423fbc","name":"401 - Example","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/people/3/segments/{{segmentId}}"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E401\",\n  \"description\": \"The request lacks valid authentication credentials for the requested resource.\",\n  \"action\": \"Check the resources and adjust authentication credentials.\",\n  \"violations\": [],\n  \"resources\": [\n    {\n      \"name\": \"API Authentication\",\n      \"url\": \"https://www.vhd.com/docs/essentials/api-authentication\"\n    }\n  ]\n}"},{"id":"c5342ec8-59ce-42ab-8293-b05d3488788c","name":"403 - Example","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/people/3/segments/{{segmentId}}"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E403\",\n  \"description\": \"Insufficient permissions to access the requested resource.\",\n  \"action\": \"Repeat the request with new or different credentials.\",\n  \"violations\": [],\n  \"resources\": [\n    {\n      \"name\": \"API Scopes\",\n      \"url\": \"https://www.vhd.com/docs/essentials/api-essentials/api-authorization#api-scopes\"\n    }\n  ]\n}"},{"id":"f53439f1-9161-4da1-85c4-5f9343bb540c","name":"404 - real VHD response","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/people/3/segments/{{segmentId}}"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E404\",\n  \"description\": \"Not found - request URL doesn't exist on the API server or resource is not found.\",\n  \"action\": \"Check the resources and adjust your request.\",\n  \"violations\": [\n    {\n      \"violation\": \"Segment with given id does not exist.\"\n    }\n  ],\n  \"resources\": []\n}"},{"id":"98469771-1780-4445-a413-55a604d1182b","name":"429 - Example","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/people/3/segments/{{segmentId}}"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E429\",\n  \"description\": \"Too many requests sent.\",\n  \"action\": \"Check request rate limit specified in the API endpoint documentation resource.\",\n  \"violations\": [],\n  \"resources\": [\n    {\n      \"name\": \"Throttling handling errors\",\n      \"url\": \"https://www.vhd.com/docs/essentials/integration-best-practices#throttling-handling-errors\"\n    }\n  ]\n}"},{"id":"0a6abdf0-86e0-4f8c-a48c-4b405dd96e77","name":"500 - Example","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/people/3/segments/{{segmentId}}"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"errorCode\": \"E500\",\n  \"description\": \"Something went wrong.\",\n  \"action\": \"Contact the support.\",\n  \"violations\": [],\n  \"resources\": []\n}"}],"_postman_id":"815f8500-4bf6-49e1-9479-75b096276f65"}],"id":"608bbc81-2a08-4ecb-9c61-01543cb5517b","description":"<p>Segments group people by rules, so you can target them together. Create and manage segments, and list the people in a segment.</p>\n","_postman_id":"608bbc81-2a08-4ecb-9c61-01543cb5517b"}],"id":"b16ca812-cf1b-4843-b163-f13d0b35b195","description":"<p>Build rich profiles for each person to create audience segments for more precise targeting. Manage duplicates and import your data over API.</p>\n<p>Events reflect actions that end users take on your website or in your mobile application.</p>\n<p>Events API is a robust way to send those events to VHD. Event can be sent only to an existing person in Target module and an event definition should be created beforehand to describe contents of the event.</p>\n<blockquote>\n<p><strong>Running these requests.</strong> The requests in this folder run in order, on sample data (<code>janewilliams@example.com</code>, the tag <code>Vip</code>, the company <code>Example</code>, the attribute <code>ShoppingCartList</code>). Each create request first removes leftovers of an earlier run, so you can run the folder again and again. No variables need to be set.</p>\n</blockquote>\n","_postman_id":"b16ca812-cf1b-4843-b163-f13d0b35b195"},{"name":"BLOCKLIST","item":[{"name":"Get all blocklists","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","// The Blocklist API allows 1 request per second, so wait a moment before each request.","pause(1300, function () {});"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests for Get all blocklists.","pm.test(\"Response status code is 200\", function () { pm.response.to.have.status(200); });","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","var res;","pm.test(\"Content-Type is application/json\", function () {","    pm.expect(pm.response.headers.get('Content-Type')).to.include('application/json');","    res = pm.response.json();","});","","pm.test(\"Response contains the 'results' array\", function () {","    pm.expect(res).to.have.property('results').that.is.an('array');","});","","pm.test(\"Each blocklist record has the documented fields\", function () {","    res.results.forEach(function (r) {","        pm.expect(r, 'missing destination').to.have.property('destination');","        pm.expect(r, 'missing sourceType').to.have.property('sourceType');","        pm.expect(r.sourceType).to.be.oneOf(['CUSTOM', 'MO', 'URL_OPT_OUT', 'CAMPAIGN']);","        pm.expect(r, 'missing createdDate').to.have.property('createdDate');","        if (r.channel) {","            pm.expect(r.channel).to.be.oneOf(['SMS', 'EMAIL', 'VOICE_OUTBOUND_TTS', 'NEW_PUSH_NOTIF', 'VIBER', 'RCS', 'WHATSAPP', 'APPLE_MB', 'MMS']);","        }","    });","});","","pm.test(\"Paging object is present in the response\", function () {","    pm.expect(res).to.have.property('paging');","    pm.expect(res.paging).to.include.all.keys('page', 'size', 'totalPages', 'totalResults');","});",""],"type":"text/javascript","packages":{}}}],"id":"2ba114c4-5380-409b-a26a-511ff6a3a6b6","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[],"url":"https://go2.vhdmedia.se/platform/1/blocklists","description":"<p>Get all blocklist records, or filter them by sender, destination, channel, source, account, creation date, or campaign.</p>\n<h5 id=\"authorizations\">AUTHORIZATIONS:</h5>\n<p>API Key Header, Basic, OAuth 2</p>\n<h5 id=\"request-rate-limit\">REQUEST RATE LIMIT:</h5>\n<p>1 request per second (per account). Faster requests return <code>429 Too Many Requests</code>.</p>\n<h3 id=\"query-parameters\">Query parameters</h3>\n<p>All parameters are optional.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>sender</em></td>\n<td>String</td>\n<td>The sender ID for which blocklist happened.</td>\n</tr>\n<tr>\n<td><em>destination</em></td>\n<td>String</td>\n<td>Blocklisted destination address.</td>\n</tr>\n<tr>\n<td><em>channel</em></td>\n<td>String</td>\n<td>Channel used for sending for which blocklist happened. If you want to check blocklist records for all channels, this field can be left out. One of: <code>SMS</code>, <code>EMAIL</code>, <code>VOICE_OUTBOUND_TTS</code>, <code>NEW_PUSH_NOTIF</code>, <code>VIBER</code>, <code>RCS</code>, <code>WHATSAPP</code>, <code>APPLE_MB</code>, <code>MMS</code>.</td>\n</tr>\n<tr>\n<td><em>sourceType</em></td>\n<td>String</td>\n<td>Represents the way blocklist record was created: CUSTOM - blocklist record that was created manually MO - blocklist record automatically created once an end user unsubscribes by replying with a specific keyword (e.g.: STOP). This is applicable for the following channels: SMS, MMS. URL_OPT_OUT - blocklist record automatically created once an end user clicks an opt-out link included in the message. CAMPAIGN - blocklist record automatically created through a triggered event in the Flow (e.g., if the message was not opened in 24h, add to blocklist). One of: <code>CUSTOM</code>, <code>MO</code>, <code>URL_OPT_OUT</code>, <code>CAMPAIGN</code>.</td>\n</tr>\n<tr>\n<td><em>accountKey</em></td>\n<td>String</td>\n<td>Account connected with a blocklist record. Main account has access to blocklist records of their subaccounts. Subaccounts can only access blocklist records specific to them. API to retrieve account key.</td>\n</tr>\n<tr>\n<td><em>getAllAccountKeysBlocklists</em></td>\n<td>Boolean</td>\n<td>If set to <code>true</code>, blocklist records for subaccounts will be returned as well.</td>\n</tr>\n<tr>\n<td><em>createdDateFrom</em></td>\n<td>String</td>\n<td>Use with <code>createDateTo</code> to search for blocklists for a particular date range.</td>\n</tr>\n<tr>\n<td><em>createdDateTo</em></td>\n<td>String</td>\n<td>Use with <code>createDateFrom</code> to search for blocklists for a particular date range.</td>\n</tr>\n<tr>\n<td><em>campaign</em></td>\n<td>String</td>\n<td>ID that allows you to track, analyze, and show an aggregated overview and the performance of individual campaigns per sending channel.</td>\n</tr>\n<tr>\n<td><em>page</em></td>\n<td>Int</td>\n<td>Requested page number. Default: <code>0</code>.</td>\n</tr>\n<tr>\n<td><em>size</em></td>\n<td>Int</td>\n<td>Requested page size. Default: <code>100</code>. Maximum: 1000.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>results</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> Blocklists for requested paging information.</td>\n</tr>\n<tr>\n<td><em>results[].sender</em></td>\n<td>String</td>\n<td>The sender ID for which blocklist happened.</td>\n</tr>\n<tr>\n<td><em>results[].destination</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Blocklisted destination address.</td>\n</tr>\n<tr>\n<td><em>results[].sourceType</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Represents the way blocklist record was created: CUSTOM - blocklist record that was created manually MO - blocklist record automatically created once an end user unsubscribes by replying with a specific keyword (e.g.: STOP). This is applicable for the following channels: SMS, MMS. URL_OPT_OUT - blocklist record automatically created once an end user clicks an opt-out link included in the message. CAMPAIGN - blocklist record automatically created through a triggered event in the Flow (e.g., if the message was not opened in 24h, add to blocklist). If source type is omitted while deleting, all blocklists that match delete request will be deleted regardless of the source type. One of: <code>CUSTOM</code>, <code>MO</code>, <code>URL_OPT_OUT</code>, <code>CAMPAIGN</code>.</td>\n</tr>\n<tr>\n<td><em>results[].channel</em></td>\n<td>String</td>\n<td>Channel used for sending for which blocklist happened. One of: <code>SMS</code>, <code>EMAIL</code>, <code>VOICE_OUTBOUND_TTS</code>, <code>NEW_PUSH_NOTIF</code>, <code>VIBER</code>, <code>RCS</code>, <code>WHATSAPP</code>, <code>APPLE_MB</code>, <code>MMS</code>.</td>\n</tr>\n<tr>\n<td><em>results[].accountKey</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Account connected with a blocklist record. Main account has access to blocklist records of their subaccounts. Subaccounts can only access blocklist records specific to them. API to retrieve account key.</td>\n</tr>\n<tr>\n<td><em>results[].createdDate</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Timestamp of created blocklist record.</td>\n</tr>\n<tr>\n<td><em>results[].campaign</em></td>\n<td>String</td>\n<td>ID that allows you to track, analyze, and show an aggregated overview and the performance of individual campaigns per sending channel.</td>\n</tr>\n<tr>\n<td><em>paging</em></td>\n<td>Object</td>\n<td><strong>Required.</strong> Paging response.</td>\n</tr>\n<tr>\n<td><em>paging.page</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Requested page number.</td>\n</tr>\n<tr>\n<td><em>paging.size</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Requested page size.</td>\n</tr>\n<tr>\n<td><em>paging.totalPages</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Total pages.</td>\n</tr>\n<tr>\n<td><em>paging.totalResults</em></td>\n<td>Int</td>\n<td><strong>Required.</strong> Total results.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Errors use the format <code>requestError.serviceException</code> with <code>messageId</code>, <code>text</code> and <code>validationErrors</code>. Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["platform","1","blocklists"],"host":["go2","vhdmedia","se"],"query":[{"disabled":true,"description":{"content":"<p>The sender ID for which blocklist happened.</p>\n","type":"text/plain"},"key":"sender","value":""},{"disabled":true,"description":{"content":"<p>Blocklisted destination address.</p>\n","type":"text/plain"},"key":"destination","value":""},{"disabled":true,"description":{"content":"<p>Channel used for sending for which blocklist happened. If you want to check blocklist records for all channels, this field can be left out.</p>\n","type":"text/plain"},"key":"channel","value":""},{"disabled":true,"description":{"content":"<p>Represents the way blocklist record was created: CUSTOM - blocklist record that was created manually MO - blocklist record automatically created once an end user unsubscribes by replying with a specific keyword (e.g.: STOP). This is applicable for the following channels: SMS, MMS. URL_OPT_OUT - blocklist record automatically created once an end user clicks an opt-out link included in the message. CAMPAIGN - blocklist record automatically created through a triggered event in the Flow (e.g., if the message was not opened in 24h, add to blocklist).</p>\n","type":"text/plain"},"key":"sourceType","value":""},{"disabled":true,"description":{"content":"<p>Account connected with a blocklist record. Main account has access to blocklist records of their subaccounts. Subaccounts can only access blocklist records specific to them. API to retrieve account key.</p>\n","type":"text/plain"},"key":"accountKey","value":""},{"disabled":true,"description":{"content":"<p>If set to <code>true</code>, blocklist records for subaccounts will be returned as well.</p>\n","type":"text/plain"},"key":"getAllAccountKeysBlocklists","value":""},{"disabled":true,"description":{"content":"<p>Use with <code>createDateTo</code> to search for blocklists for a particular date range.</p>\n","type":"text/plain"},"key":"createdDateFrom","value":""},{"disabled":true,"description":{"content":"<p>Use with <code>createDateFrom</code> to search for blocklists for a particular date range.</p>\n","type":"text/plain"},"key":"createdDateTo","value":""},{"disabled":true,"description":{"content":"<p>ID that allows you to track, analyze, and show an aggregated overview and the performance of individual campaigns per sending channel.</p>\n","type":"text/plain"},"key":"campaign","value":""},{"disabled":true,"description":{"content":"<p>Requested page number. Default: <code>0</code>.</p>\n","type":"text/plain"},"key":"page","value":"0"},{"disabled":true,"description":{"content":"<p>Requested page size. Default: <code>100</code>. Maximum: 1000.</p>\n","type":"text/plain"},"key":"size","value":"10"}],"variable":[]}},"response":[{"id":"5ca4a993-be57-4882-b1b2-96caad18c10f","name":"Get all blocklists","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/platform/1/blocklists?size=10","protocol":"https","host":["go2","vhdmedia","se"],"path":["platform","1","blocklists"],"query":[{"key":"size","value":"10"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"results\": [\n    {\n      \"destination\": \"46731234567\",\n      \"sourceType\": \"CUSTOM\",\n      \"channel\": \"SMS\",\n      \"accountKey\": \"90D1D1EB0272BE71B1C7924926E33F0A\",\n      \"createdDate\": \"2026-10-18T09:00:00Z\"\n    },\n    {\n      \"sender\": \"example@vhdmedia.eu\",\n      \"destination\": \"jane.smith@vhdmedia.se\",\n      \"sourceType\": \"URL_OPT_OUT\",\n      \"channel\": \"EMAIL\",\n      \"accountKey\": \"90D1D1EB0272BE71B1C7924926E33F0A\",\n      \"createdDate\": \"2026-10-17T14:30:00Z\"\n    }\n  ],\n  \"paging\": {\n    \"page\": 0,\n    \"size\": 10,\n    \"totalPages\": 1,\n    \"totalResults\": 2\n  }\n}"},{"id":"1114d8c9-0f8a-4968-84fe-c04d63c7b883","name":"Bad request - unsupported channel","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://go2.vhdmedia.se/platform/1/blocklists?channel=NOPE","protocol":"https","host":["go2","vhdmedia","se"],"path":["platform","1","blocklists"],"query":[{"key":"channel","value":"NOPE"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"BAD_REQUEST\",\n      \"text\": \"Bad request\",\n      \"validationErrors\": {\n        \"channel\": [\n          \"unsupported channel\"\n        ]\n      }\n    }\n  }\n}"},{"id":"945e03cb-fe06-4ba0-9503-61ec5f0d26f7","name":"Unauthorized - invalid API key","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/platform/1/blocklists"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Invalid login details\"\n    }\n  }\n}"},{"id":"6f1beb73-bd9d-4788-891f-6d282a925bb5","name":"Too many requests","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://go2.vhdmedia.se/platform/1/blocklists"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"}],"_postman_id":"2ba114c4-5380-409b-a26a-511ff6a3a6b6"},{"name":"Create blocklists","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","// The Blocklist API allows 1 request per second, so wait a moment before each request.","pause(1300, function () {});"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests for Create blocklists. The request is processed asynchronously, so a successful call returns 202 with no body.","pm.test(\"Status code is 202\", function () { pm.response.to.have.status(202); });","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","pm.test(\"Request body lists at least one destination\", function () {","    var body = JSON.parse(pm.request.body.raw);","    pm.expect(body.blocklist).to.be.an('array').with.lengthOf.at.least(1);","    body.blocklist.forEach(function (b) {","        pm.expect(b.destinations).to.be.an('array').with.lengthOf.at.least(1);","    });","});",""],"type":"text/javascript","packages":{}}}],"id":"ae75471c-b1ed-462f-b3ed-212ba918da64","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"blocklist\": [\n    {\n      \"destinations\": [\n        {\n          \"to\": \"46731234567\"\n        }\n      ],\n      \"sender\": \"VHD\",\n      \"channel\": \"SMS\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/platform/1/blocklists","description":"<p>This method allows you to add destinations to the blocklist, so that no messages are sent to them. Duplicate entries are left out.</p>\n<h5 id=\"authorizations\">AUTHORIZATIONS:</h5>\n<p>API Key Header, Basic, OAuth 2</p>\n<h5 id=\"request-rate-limit\">REQUEST RATE LIMIT:</h5>\n<p>1 request per second (per account). Faster requests return <code>429 Too Many Requests</code>.</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>blocklist</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> Blocklist elements that need to be blocklisted. Number of destinations cannot exceed 50 000.</td>\n</tr>\n<tr>\n<td><em>blocklist[].destinations</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> Destination addresses that need to be blocklisted.</td>\n</tr>\n<tr>\n<td><em>blocklist[].destinations[].to</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Destination address that needs to be blocklisted. Addresses must be a number in international format (example: <code>41793026727</code>), a valid email address (example: <code>recipient@example.com</code>) or valid email domain (example: <code>example.com</code>).</td>\n</tr>\n<tr>\n<td><em>blocklist[].sender</em></td>\n<td>String</td>\n<td>The sender ID for which blocklist happened.</td>\n</tr>\n<tr>\n<td><em>blocklist[].channel</em></td>\n<td>String</td>\n<td>Channel used for sending for which blocklist happened. One of: <code>SMS</code>, <code>EMAIL</code>, <code>VIBER</code>, <code>RCS</code>, <code>MMS</code>, <code>WHATSAPP</code>.</td>\n</tr>\n<tr>\n<td><em>blocklist[].accountKey</em></td>\n<td>String</td>\n<td>Account connected with a blocklist record. Main account has access to blocklist records of their subaccounts. Subaccounts can only access blocklist records specific to them. API to retrieve account key.</td>\n</tr>\n</tbody>\n</table>\n</div><p>The number of destinations in one request cannot exceed 50 000.</p>\n<h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>202 Accepted</code> with no body. The request is processed asynchronously, so the change can take a moment to show up in <strong>Get all blocklists</strong>.</p>\n<p>Errors use the format <code>requestError.serviceException</code> with <code>messageId</code>, <code>text</code> and <code>validationErrors</code>. Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["platform","1","blocklists"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"de3a5b5e-b2ce-4bb5-9ff4-3a98dae272ed","name":"Create blocklists SMS","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"blocklist\": [\n    {\n      \"destinations\": [\n        {\n          \"to\": \"46731234567\"\n        }\n      ],\n      \"sender\": \"VHD\",\n      \"channel\": \"SMS\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/platform/1/blocklists"},"status":"Accepted","code":202,"_postman_previewlanguage":"text","header":null,"cookie":[],"responseTime":null,"body":null},{"id":"3fe452c3-97e1-40fe-a6ae-ac07224e9914","name":"Create blocklists Email","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"blocklist\": [\n    {\n      \"destinations\": [\n        {\n          \"to\": \"jane.smith@vhdmedia.se\"\n        }\n      ],\n      \"sender\": \"example@vhdmedia.eu\",\n      \"channel\": \"EMAIL\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/platform/1/blocklists"},"status":"Accepted","code":202,"_postman_previewlanguage":"text","header":null,"cookie":[],"responseTime":null,"body":null},{"id":"05b3a7e8-0ab1-49eb-82e0-9bbaa9fa806c","name":"Bad request - destinations are missing","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"blocklist\": [\n    {\n      \"destinations\": []\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/platform/1/blocklists"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"BAD_REQUEST\",\n      \"text\": \"Bad request\",\n      \"validationErrors\": {\n        \"blocklist[0].destinations\": [\n          \"must not be empty\"\n        ]\n      }\n    }\n  }\n}"},{"id":"4a429329-fabc-4b9f-bd3d-4e3681a6d86e","name":"Unauthorized - invalid API key","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"blocklist\": [\n    {\n      \"destinations\": [\n        {\n          \"to\": \"46731234567\"\n        }\n      ],\n      \"sender\": \"VHD\",\n      \"channel\": \"SMS\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/platform/1/blocklists"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Invalid login details\"\n    }\n  }\n}"},{"id":"ac03aed4-2237-4fe4-9c58-67fa87af655e","name":"Forbidden","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"blocklist\": [\n    {\n      \"destinations\": [\n        {\n          \"to\": \"46731234567\"\n        }\n      ],\n      \"sender\": \"VHD\",\n      \"channel\": \"SMS\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/platform/1/blocklists"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"FORBIDDEN\",\n      \"text\": \"Forbidden\"\n    }\n  }\n}"},{"id":"89994146-5afa-4ea8-af1f-7760a2d2f956","name":"Too many requests","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"blocklist\": [\n    {\n      \"destinations\": [\n        {\n          \"to\": \"46731234567\"\n        }\n      ],\n      \"sender\": \"VHD\",\n      \"channel\": \"SMS\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/platform/1/blocklists"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"},{"id":"5eacdb35-836f-4812-9c94-a3ba164ab947","name":"Internal server error","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"blocklist\": [\n    {\n      \"destinations\": [\n        {\n          \"to\": \"46731234567\"\n        }\n      ],\n      \"sender\": \"VHD\",\n      \"channel\": \"SMS\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/platform/1/blocklists"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"GENERAL_ERROR\",\n      \"text\": \"Something went wrong. Please contact support.\"\n    }\n  }\n}"}],"_postman_id":"ae75471c-b1ed-462f-b3ed-212ba918da64"},{"name":"Delete Blocklist","event":[{"listen":"prerequest","script":{"exec":["var BASE = \"https://go2.vhdmedia.se\";","var HDR = { \"Authorization\": \"App \" + pm.environment.get(\"API_KEY\"), \"Accept\": \"application/json\", \"Content-Type\": \"application/json\" };","function api(method, path, body, cb) {","    var o = { url: BASE + path, method: method, header: HDR };","    if (body !== undefined && body !== null) { o.body = { mode: \"raw\", raw: JSON.stringify(body) }; }","    pm.sendRequest(o, function (err, res) { cb(err, res); });","}","function jsonOf(res) { try { return res.json(); } catch (e) { return null; } }","function cv(k, v) { if (v === undefined) { return pm.collectionVariables.get(k); } pm.collectionVariables.set(k, v); }","function skip(why) {","    console.warn(\"Skipping: \" + why);","    if (pm.execution && pm.execution.skipRequest) { pm.execution.skipRequest(); }","    else { pm.request.url.update(\"http://localhost:1/skipped\"); }","}","function need() {","    for (var i = 0; i < arguments.length; i++) {","        if (!cv(arguments[i])) { skip(arguments[i] + \" is not set (an earlier step failed or was skipped).\"); return false; }","    }","    return true;","}","function waitUntil(check, tries, delayMs, done) {","    check(function (ok) {","        if (ok || tries <= 0) { done(ok); }","        else { setTimeout(function () { waitUntil(check, tries - 1, delayMs, done); }, delayMs); }","    });","}","function iso(days) {","    var d = new Date(Date.now() + days * 86400000);","    function p(n) { return (\"0\" + n).slice(-2); }","    return d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\";","}","function pause(ms, then) { setTimeout(then, ms); }","","// The Blocklist API allows 1 request per second, and creating a record is asynchronous:","// wait until the sample record is really on the blocklist before it is deleted.","waitUntil(function (cb) {","    pause(1300, function () {","        api(\"GET\", \"/platform/1/blocklists?destination=46731234567\", null, function (e, r) { cb(((jsonOf(r) || {}).paging || {}).totalResults > 0); });","    });","}, 10, 1000, function () { pause(1400, function () {}); });"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"exec":["// Tests for Delete Blocklist. The request is processed asynchronously, so a successful call returns 202 with no body.","pm.test(\"Status code is 202\", function () { pm.response.to.have.status(202); });","","pm.test(\"Response time is below 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","","pm.test(\"Request body lists at least one destination\", function () {","    var body = JSON.parse(pm.request.body.raw);","    pm.expect(body.blocklist).to.be.an('array').with.lengthOf.at.least(1);","    body.blocklist.forEach(function (b) {","        pm.expect(b.destinations).to.be.an('array').with.lengthOf.at.least(1);","    });","});",""],"type":"text/javascript","packages":{}}}],"id":"73786208-9b2c-44e2-8d44-c01e6622183d","request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n  \"blocklist\": [\n    {\n      \"destinations\": [\n        {\n          \"to\": \"46731234567\"\n        }\n      ],\n      \"sender\": \"VHD\",\n      \"channel\": \"SMS\",\n      \"sourceType\": \"CUSTOM\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/platform/1/blocklists","description":"<p>This method allows you to remove destinations from the blocklist.</p>\n<h5 id=\"authorizations\">AUTHORIZATIONS:</h5>\n<p>API Key Header, Basic, OAuth 2</p>\n<h5 id=\"request-rate-limit\">REQUEST RATE LIMIT:</h5>\n<p>1 request per second (per account). Faster requests return <code>429 Too Many Requests</code>.</p>\n<h3 id=\"request-body-schema\">Request body schema</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>blocklist</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> Blocklist elements that need to be removed from blocklist. Number of destinations cannot exceed 50 000.</td>\n</tr>\n<tr>\n<td><em>blocklist[].destinations</em></td>\n<td>Array</td>\n<td><strong>Required.</strong> Destination addresses that need to be removed from blocklist.</td>\n</tr>\n<tr>\n<td><em>blocklist[].destinations[].to</em></td>\n<td>String</td>\n<td><strong>Required.</strong> Destination address that needs to be removed from blocklist. Addresses must be a number in international format (example: <code>41793026727</code>), a valid email address (example: <code>recipient@example.com</code>) or valid email domain (example: <code>example.com</code>).</td>\n</tr>\n<tr>\n<td><em>blocklist[].sender</em></td>\n<td>String</td>\n<td>The sender ID that needs to be removed from blocklist. Sender can be alphanumeric or numeric.</td>\n</tr>\n<tr>\n<td><em>blocklist[].channel</em></td>\n<td>String</td>\n<td>Channel for which blocklist record/s will be removed. One of: <code>SMS</code>, <code>EMAIL</code>, <code>VIBER</code>, <code>RCS</code>, <code>MMS</code>, <code>APPLE_MB</code>, <code>WHATSAPP</code>.</td>\n</tr>\n<tr>\n<td><em>blocklist[].accountKey</em></td>\n<td>String</td>\n<td>Account for which blocklist record/s will be removed. Main account can remove blocklist record/s for their subaccounts. Subaccounts can remove blocklist record/s specific to them. API to retrieve account key.</td>\n</tr>\n<tr>\n<td><em>blocklist[].sourceType</em></td>\n<td>String</td>\n<td>Represents the way blocklist record was created: CUSTOM - blocklist record that was created manually MO - blocklist record automatically created once an end user unsubscribes by replying with a specific keyword (e.g.: STOP). This is applicable for the following channels: SMS, MMS. URL_OPT_OUT - blocklist record automatically created once an end user clicks an opt-out link included in the message. CAMPAIGN - blocklist record automatically created through a triggered event in the Flow (e.g., if the message was not opened in 24h, add to blocklist). If source type is omitted while deleting, all blocklists that match delete request will be deleted regardless of the source type. One of: <code>CUSTOM</code>, <code>MO</code>, <code>URL_OPT_OUT</code>, <code>CAMPAIGN</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><p>The number of destinations in one request cannot exceed 50 000.</p>\n<h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>202 Accepted</code> with no body. The request is processed asynchronously, so the change can take a moment to show up in <strong>Get all blocklists</strong>.</p>\n<blockquote>\n<p><strong>List every property of the record.</strong> To delete a record you must send all the properties it was created with. For example, a record created with <code>sender</code> <code>VHD</code>, <code>destination</code> <code>46731234567</code>, <code>sourceType</code> <code>CUSTOM</code> and <code>channel</code> <code>SMS</code> is removed with <code>{\"blocklist\": [{\"destinations\": [{\"to\": \"46731234567\"}], \"sender\": \"VHD\", \"channel\": \"SMS\", \"sourceType\": \"CUSTOM\"}]}</code>. The record is removed only when all of its properties are listed.</p>\n</blockquote>\n<p>Errors use the format <code>requestError.serviceException</code> with <code>messageId</code>, <code>text</code> and <code>validationErrors</code>. Status codes: <code>400</code> bad request, <code>401</code> missing or invalid credentials, <code>403</code> insufficient permissions, <code>429</code> too many requests, <code>500</code> server error.</p>\n","urlObject":{"protocol":"https","path":["platform","1","blocklists"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"87f7175e-b2ec-458b-be63-f2ad7a673197","name":"Delete Blocklist SMS","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"blocklist\": [\n    {\n      \"destinations\": [\n        {\n          \"to\": \"46731234567\"\n        }\n      ],\n      \"sender\": \"VHD\",\n      \"channel\": \"SMS\",\n      \"sourceType\": \"CUSTOM\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/platform/1/blocklists"},"status":"Accepted","code":202,"_postman_previewlanguage":"text","header":null,"cookie":[],"responseTime":null,"body":null},{"id":"8c69f078-e2ee-497c-8b94-43cf5e8e7a6f","name":"Delete Blocklist Email","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"blocklist\": [\n    {\n      \"destinations\": [\n        {\n          \"to\": \"jane.smith@vhdmedia.se\"\n        }\n      ],\n      \"sender\": \"example@vhdmedia.eu\",\n      \"channel\": \"EMAIL\",\n      \"sourceType\": \"CUSTOM\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/platform/1/blocklists"},"status":"Accepted","code":202,"_postman_previewlanguage":"text","header":null,"cookie":[],"responseTime":null,"body":null},{"id":"48eb5892-5df4-4b6a-a51e-bc4860ed3142","name":"Bad request - destinations are missing","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"blocklist\": [\n    {\n      \"destinations\": []\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/platform/1/blocklists"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"BAD_REQUEST\",\n      \"text\": \"Bad request\",\n      \"validationErrors\": {\n        \"blocklist[0].destinations\": [\n          \"must not be empty\"\n        ]\n      }\n    }\n  }\n}"},{"id":"b4bc9a4a-1098-465d-b346-8084e5a2f4e2","name":"Unauthorized - invalid API key","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"blocklist\": [\n    {\n      \"destinations\": [\n        {\n          \"to\": \"46731234567\"\n        }\n      ],\n      \"sender\": \"VHD\",\n      \"channel\": \"SMS\",\n      \"sourceType\": \"CUSTOM\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/platform/1/blocklists"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"UNAUTHORIZED\",\n      \"text\": \"Invalid login details\"\n    }\n  }\n}"},{"id":"be251eee-1eda-4a19-ba26-507c72637902","name":"Too many requests","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"blocklist\": [\n    {\n      \"destinations\": [\n        {\n          \"to\": \"46731234567\"\n        }\n      ],\n      \"sender\": \"VHD\",\n      \"channel\": \"SMS\",\n      \"sourceType\": \"CUSTOM\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://go2.vhdmedia.se/platform/1/blocklists"},"status":"Too Many Requests","code":429,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"requestError\": {\n    \"serviceException\": {\n      \"messageId\": \"TOO_MANY_REQUESTS\",\n      \"text\": \"Too many requests\"\n    }\n  }\n}"}],"_postman_id":"73786208-9b2c-44e2-8d44-c01e6622183d"}],"id":"f55c8381-0d19-4bac-8b3b-9c32a051d8ba","description":"<p>Phone numbers and email addresses (referred to as destinations) that no longer want to be contacted are stored inside a Blocklist (also known as Do Not Contact List)</p>\n<p>This platform feature is used to make sure that no communication is sent to recipients who have opted out of your communication campaigns.</p>\n<p>With the Blocklist API, you are able to programmatically manage and track the list of recipients who want to stop receiving communication from your company while remaining compliant with important personal data regulations, such as GDPR.</p>\n<p>Requests to the Blocklist API are limited to <strong>1 per second per account</strong>. Creating and deleting records is asynchronous: the API answers <code>202 Accepted</code> and applies the change shortly afterwards.</p>\n<blockquote>\n<p><strong>Running these requests.</strong> They run in order: get, create, delete. Each request waits briefly because of the rate limit, and the delete waits until the sample record exists, so you can run the folder again and again. The sample record (<code>46731234567</code>) is removed at the end.</p>\n</blockquote>\n","_postman_id":"f55c8381-0d19-4bac-8b3b-9c32a051d8ba"},{"name":"ACCOUNTS","item":[{"name":"Get current accounts","event":[{"listen":"test","script":{"exec":["// Test if the response status code is 200","pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});","","// Parse the response body as JSON","var responseBody;","try {","    responseBody = pm.response.json();","} catch (error) {","    pm.test(\"Response body is valid JSON\", function () {","        pm.expect.fail(\"Response body is not valid JSON: \" + error);","    });","}","","// Test if the response is an object","pm.test(\"Response is a JSON object\", function () {","    pm.expect(responseBody).to.be.an('object');","});","","// Test if 'enabled' property exists and is a boolean","pm.test(\"'enabled' property exists and is a boolean\", function () {","    pm.expect(responseBody).to.have.property('enabled').that.is.a('boolean');","});","","// Test if 'key' property exists and is a string","pm.test(\"'key' property exists and is a string\", function () {","    pm.expect(responseBody).to.have.property('key').that.is.a('string');","});","","// Test if 'name' property exists and is a string, and does not exceed 150 characters","pm.test(\"'name' property exists and is a string with max length of 150 characters\", function () {","    pm.expect(responseBody).to.have.property('name').that.is.a('string');","    pm.expect(responseBody.name).to.have.lengthOf.at.most(150);","});","","","","// Log the response body for debugging purposes","console.log(\"Response Body:\", responseBody);",""],"type":"text/javascript","packages":{}}}],"id":"bccf6a4e-1bb4-4e09-a377-bdfff87fb329","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"<value>"}]},"isInherited":false},"method":"GET","header":[],"body":{"mode":"raw","raw":""},"url":"https://go2.vhdmedia.se/settings/1/accounts/_","description":"<p>Get details of the account that owns the API key used for the request. Use it to check that your key is valid and which account it belongs to.</p>\n<h3 id=\"response-format\">Response format</h3>\n<p>On success the response is <code>200 OK</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>key</em></td>\n<td>String</td>\n<td>Unique key of the account.</td>\n</tr>\n<tr>\n<td><em>ownerKey</em></td>\n<td>String</td>\n<td>Key of the account that owns this account.</td>\n</tr>\n<tr>\n<td><em>name</em></td>\n<td>String</td>\n<td>Name of the account. Up to 150 characters.</td>\n</tr>\n<tr>\n<td><em>enabled</em></td>\n<td>Boolean</td>\n<td>Whether the account is enabled.</td>\n</tr>\n</tbody>\n</table>\n</div><p>If the key is missing or invalid you receive <code>401 Unauthorized</code>.</p>\n","urlObject":{"protocol":"https","path":["settings","1","accounts","_"],"host":["go2","vhdmedia","se"],"query":[],"variable":[]}},"response":[{"id":"3249ff63-bf16-4829-970b-cc9a5026bc36","name":"Get current account","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":""},"url":"https://go2.vhdmedia.se/settings/1/accounts/_"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"vary","value":"Origin"},{"key":"vary","value":"Access-Control-Request-Method"},{"key":"vary","value":"Access-Control-Request-Headers"},{"key":"date","value":"Wed, 31 Jan 2024 16:57:23 GMT"},{"key":"content-type","value":"application/json;charset=utf-8"},{"key":"x-http2-stream-id","value":"3"},{"key":"server","value":"SMS API"},{"key":"transfer-encoding","value":"chunked"},{"key":"x-request-id","value":"1706720243926920663"},{"key":"strict-transport-security","value":"max-age=31536000; includeSubDomains; preload;"},{"key":"connection","value":"close"}],"cookie":[],"responseTime":null,"body":"{\n    \"key\": \"90D1D1EB0272BE71B1C7924926E33F0A\",\n    \"ownerKey\": \"40B82F5D1DC3C58B78826EAEAA1AB36D\",\n    \"name\": \"VHD\",\n    \"enabled\": true\n}"}],"_postman_id":"bccf6a4e-1bb4-4e09-a377-bdfff87fb329"}],"id":"d72c74b2-381f-42ee-8d73-54a9b1dd5e9a","description":"<p>Manage your VHD account details</p>\n","_postman_id":"d72c74b2-381f-42ee-8d73-54a9b1dd5e9a"},{"name":"SMPP SPECIFICATION","item":[],"id":"2c64d453-2e5f-4b87-b600-e24e126a8f18","description":"<p>The <strong>Short Message Peer-to-Peer (SMPP)</strong> is an open, industry-standard protocol used by the telecommunication industry for exchanging SMS messages between SMS application systems and Short Message Service Centers (SMSC).</p>\n<p>The connection between the application and the VHD SMPP server is <a href=\"http://opensmpp.org/specs/SMPP_v3_4_Issue1_2.pdf\"><b>SMPP version 3.4</b></a> (versions 3.3 and 5.0 are not supported).</p>\n<h2 id=\"supported-smpp-features\">Supported SMPP Features</h2>\n<h3 id=\"bind-parameters\">Bind Parameters</h3>\n<h5 id=\"note\">NOTE</h5>\n<p>If your SMPP environment supports only passwords up to 8 characters (SMPP v3.4 standard), contact our Support team to decrease the password strength policy on your account.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Name</strong></th>\n<th><strong>Mandatory</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>system_id</td>\n<td>Yes</td>\n<td>Provided for each client.</td>\n</tr>\n<tr>\n<td>password</td>\n<td>Yes</td>\n<td>Provided for each client.</td>\n</tr>\n<tr>\n<td>IP address</td>\n<td>Yes</td>\n<td>Contact <a href=\"https://mailto:support@vhdmedia.se\">support@vhdmedia.se</a>.</td>\n</tr>\n<tr>\n<td>port</td>\n<td>Yes</td>\n<td>8888 (primary and secondary)  <br />  <br />8887 (SSL)</td>\n</tr>\n<tr>\n<td>timeout  <br />  <br />(keep alive or msg)</td>\n<td>Yes</td>\n<td>30 sec</td>\n</tr>\n<tr>\n<td>system_type</td>\n<td>No</td>\n<td></td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"important\">IMPORTANT</h5>\n<p>You are allowed to bind as a transmitter, receiver or a transceiver. To receive delivery reports, you must bind as a <strong>transceiver</strong> or a <strong>receiver</strong>.</p>\n<p>You’ll receive delivery reports only if your route provides delivery reporting. Delivery reports will be sent equally over all of your currently available sessions capable of receiving them (<strong>transceiver</strong> or <strong>receiver</strong>).</p>\n<p>By default, you are allowed to bind with <strong>4 sessions</strong>. There is no other throughput (TPS) limitations besides internet speed.</p>\n<h2 id=\"pdu-types\">PDU Types</h2>\n<ul>\n<li>bind_transmitter</li>\n<li>bind_receiver</li>\n<li>bind_transceiver</li>\n<li>unbind</li>\n<li>submit_sm</li>\n<li>deliver_sm</li>\n<li>enquire_link</li>\n</ul>\n<h2 id=\"data-coding-schemes\">Data Coding Schemes</h2>\n<p>Setting DCS to 0 or 1 will apply the <strong>IA5 / GSM7</strong> coding scheme to the message (GSM7 being the default VHD SMSC alphabet).</p>\n<p>Set DCS = 3 for <strong>Latin1</strong> (ISO-8859-1), and DCS = 8 for sending messages as <strong>Unicode / UCS-2</strong> (ISO/IEC-10646).</p>\n<h2 id=\"scheduled-delivery\">Scheduled Delivery</h2>\n<p>Scheduled delivery is supported over the SMPP protocol using <strong>relative time format</strong>.</p>\n<p><code>070605040302100R</code></p>\n<p>For example, that would would mean that the message will be delivered in 7 years, 6 months, 5 days, 4 hours, 3 minutes, 2 seconds and 1 tenth of a second from now.</p>\n<h2 id=\"command-status\">Command Status</h2>\n<p>Each request to our system will receive an acknowledgement as per SMPP v 3.4 standard, including command_status. Most relevant command statuses, including VHD-specific ones, are in the table below:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>command_status</strong></th>\n<th><strong>PDU</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>0x0000000E</td>\n<td>bind_resp</td>\n<td>Invalid credentials</td>\n</tr>\n<tr>\n<td>0x00000022 / 34</td>\n<td>submit_sm_resp</td>\n<td>Network not covered</td>\n</tr>\n<tr>\n<td>0x000000FF / 255</td>\n<td>submit_sm_resp</td>\n<td>Account has insufficient balance</td>\n</tr>\n<tr>\n<td>0x0000000a</td>\n<td>submit_sm_resp</td>\n<td>Invalid source address</td>\n</tr>\n<tr>\n<td>0x0000000b</td>\n<td>submit_sm_resp</td>\n<td>Invalid destination address</td>\n</tr>\n<tr>\n<td>0x0000000c</td>\n<td>submit_sm_resp</td>\n<td>Duplicate or invalid messageID</td>\n</tr>\n<tr>\n<td>0x000004a1</td>\n<td>submit_sm_resp</td>\n<td>System error or channel disabled</td>\n</tr>\n<tr>\n<td>0x0000009F</td>\n<td>submit_sm_resp</td>\n<td>Invalid optional parameter length</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"delivery-report-format\">Delivery Report Format</h2>\n<p>Delivery report in this format will be returned in short message field of deliver_sm PDU:</p>\n<p><code>id:{message_id} sub:{message_sub} dlvrd:{message_dlvrd}</code></p>\n<p><code>submit date:{message_submit_date} done date:{message_done_date}</code></p>\n<p><code>stat:{message_stat} err:{message_err}</code></p>\n<h2 id=\"delivery-statuses\">Delivery Statuses</h2>\n<ul>\n<li><code>DELIVRD</code></li>\n<li><code>EXPIRED</code></li>\n<li><code>UNDELIV</code></li>\n<li><code>ACCEPTD</code></li>\n<li><code>UNKNOWN</code></li>\n<li><code>ENROUTE</code></li>\n<li><code>REJECTD</code></li>\n</ul>\n<h2 id=\"gsm-error-codes\">GSM Error Codes</h2>\n<p>GSM error codes are returned in DLRs and explain the status of the message (whether intermediate or final). Error code will be returned in the short_message as a part of delivery information, or (if enabled by VHD) in Optional TLV 0x423.</p>\n<p>Possible <a href=\"https://dev.vhdmedia.se/#8b6ff3f5-ec85-4442-b7cd-ba5d8c315fbf\">error codes</a>.</p>\n","_postman_id":"2c64d453-2e5f-4b87-b600-e24e126a8f18"},{"name":"RESPONSE STATUS AND ERROR CODES","item":[{"name":"Email status codes","item":[],"id":"c71c1b77-9a06-4f55-b063-0119922b6af9","description":"<p>REJECTED (group id: 5) - Email status codes</p>\n<p>The email has been received but has either been rejected by VHD or the operator has reverted to rejected as the final status.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>ID</th>\n<th>Status</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>75</td>\n<td><code>REJECTED_FREE_TRIAL_EXCEEDED</code> This status code is returned by the API when a user's free trial has been exceeded. It means that the user has exceeded the allowed number of messages or other usage limits during the trial period and must upgrade to their plan to continue using the service.</td>\n</tr>\n<tr>\n<td>88</td>\n<td><code>REJECTED_DATA_TRANSFORMATION_FAILED</code> This status code is returned by the API when there is an error in the data transformation process while creating the data needed to proceed with sending a mail. The error can be caused by the placeholder size exceeding limits, or data failing to parse, for example, custom headers.</td>\n</tr>\n<tr>\n<td>89</td>\n<td><code>REJECTED_INTERNAL_ERROR</code> This status code is returned by the API when there is an internal error with the system processing a message. It is set when a message goes over the limit of retries or when internal data fails to parse.</td>\n</tr>\n<tr>\n<td>90</td>\n<td><code>REJECTED_VALIDATION_FAILED</code> This status code is returned by the API when a validation check fails during the message processing. The validation error can be caused by issues such as an invalid sender, an invalid landing page, invalid preserved recipients, a missing template, and so on.</td>\n</tr>\n</tbody>\n</table>\n</div>","_postman_id":"c71c1b77-9a06-4f55-b063-0119922b6af9"},{"name":"HTTP status code","item":[],"id":"51b4c2c5-98cb-4b1d-adcb-006fd2ca0fa3","description":"<p>Every HTTP transaction has a status code sent back by the server to define how the server has handled the transaction. The most common statuses you may encounter are <code>200 OK</code>, <code>404 Not Found</code>, or <code>401 Unauthorized</code>.</p>\n<p>Check out <a href=\"https://en.wikipedia.org/wiki/List_of_HTTP_status_codes\">the list of the HTTP status codes</a> to learn more.</p>\n","_postman_id":"51b4c2c5-98cb-4b1d-adcb-006fd2ca0fa3"},{"name":"API status code","item":[],"id":"bd8c0602-1d74-4517-84b4-09598c2dbff1","description":"<p>Besides standard HTTP status code, status object may be returned as part of the API response message, delivery report or message log.</p>\n<p>Status object example:</p>\n<p>JSON</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>{  \n   \"groupId\":3,\n   \"groupName\":\"DELIVERED\",\n   \"id\":5,\n   \"name\":\"DELIVERED_TO_HANDSET\",\n   \"description\":\"Message delivered to handset\"\n}\n\n</code></pre>","_postman_id":"bd8c0602-1d74-4517-84b4-09598c2dbff1"},{"name":"GENERAL status code","item":[],"id":"ca2e7f15-53f4-4373-ba1a-ae780bd01bff","description":"<h3 id=\"pending-group-id-1---general-status-codes\">PENDING (group id: 1) - general status codes</h3>\n<p>Message has been processed and sent to the next instance i.e. mobile operator.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Id</th>\n<th>Status</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>3</td>\n<td><code>PENDING_WAITING_DELIVERY</code>  <br />  <br />- Message has been processed and sent to the next instance i.e. mobile operator with request acknowledgment from their platform. Delivery report has not yet been received, and is awaited thus the status is still pending.</td>\n</tr>\n<tr>\n<td>7</td>\n<td><code>PENDING_ENROUTE</code>  <br />  <br />- Message has been processed and sent to the next instance i.e. mobile operator.</td>\n</tr>\n<tr>\n<td>26</td>\n<td><code>PENDING_ACCEPTED</code>  <br />  <br />- Message has been accepted and processed, and is ready to be sent to the next instance i.e. operator.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"undeliverable-group-id-2---general-status-codes\">UNDELIVERABLE (group id: 2) - general status codes</h3>\n<p>Message has not been delivered.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Id</th>\n<th>Status</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>4</td>\n<td><code>UNDELIVERABLE_REJECTED_OPERATOR</code>  <br />  <br />- Message has been sent to the operator, whereas the request was rejected, or a delivery report with status \"REJECTED\" was reverted.</td>\n</tr>\n<tr>\n<td>9</td>\n<td><code>UNDELIVERABLE_NOT_DELIVERED</code>  <br />  <br />- Message has been sent to the operator, but has failed to deliver, since a delivery report with status \"UNDELIVERED\" was reverted from the operator.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"delivered-group-id-3---general-status-codes\">DELIVERED (group id: 3) - general status codes</h3>\n<p>Message has successfully been processed and delivered.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Id</th>\n<th>Status</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>2</td>\n<td><code>DELIVERED_TO_OPERATOR</code>  <br />  <br />- Message has been successfully sent and delivered to the operator.</td>\n</tr>\n<tr>\n<td>5</td>\n<td><code>DELIVERED_TO_HANDSET</code>  <br />  <br />- Message has been successfully processed and delivered to recipient.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"expired-group-id-4---general-status-codes\">EXPIRED (group id: 4) - general status codes</h3>\n<p>Message has been sent, and has either expired due to being pending past its validity period (our platform default is 48 hours), or the delivery report from the operator has reverted the expired as a final status.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Id</th>\n<th>Status</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>15</td>\n<td><code>EXPIRED_EXPIRED</code>  <br />  <br />- The message was received and sent to the operator, however it has been pending until the validity period has expired, or the operator returned EXPIRED status in the meantime.</td>\n</tr>\n<tr>\n<td>29</td>\n<td><code>EXPIRED_DLR_UNKNOWN</code>  <br />  <br />- The message has been received and forwarded to the operator for delivery, however the delivery report from the operator has not been formatted correctly, or has not been recognized as valid.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"rejected-group-id-5---general-status-codes\">REJECTED (group id: 5) - general status codes</h3>\n<p>Message has been received, but has either been rejected by our system, or the operator has reverted Rejected as final status.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>ID</th>\n<th>Status</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>6</td>\n<td><code>REJECTED_NETWORK</code> Message has been received, but the network is either out of our coverage or is not set up on your account. Your Account Manager can inform you about the coverage status or set up the network in question.</td>\n</tr>\n<tr>\n<td>8</td>\n<td><code>REJECTED_PREFIX_MISSING</code> Message has been received but rejected as the number is not recognized due to an incorrect number prefix or length. This information is different for each network and is regularly updated.</td>\n</tr>\n<tr>\n<td>10</td>\n<td><code>REJECTED_DND</code> Message has been received and rejected because the user is subscribed to DND (Do Not Disturb) services, disabling any service traffic to their number.</td>\n</tr>\n<tr>\n<td>11</td>\n<td><code>REJECTED_SOURCE</code> Your account is set to accept only registered sender IDs, and the sender ID defined in the request has not been registered on your account.</td>\n</tr>\n<tr>\n<td>12</td>\n<td><code>REJECTED_NOT_ENOUGH_CREDITS</code> Your account is out of credits for further submission. Top up your account.</td>\n</tr>\n<tr>\n<td>13</td>\n<td><code>REJECTED_SENDER</code> The sender ID has been blocklisted on your account. Remove the blocklist on your account or contact support for further assistance.</td>\n</tr>\n<tr>\n<td>14</td>\n<td><code>REJECTED_DESTINATION_BLOCKLISTED</code> The destination address has been blocklisted either at the operator's request or on your account via the web interface. Remove the blocklist on your account via the VHD web interface(opens in a new tab) or contact support for more information.</td>\n</tr>\n<tr>\n<td>17</td>\n<td><code>REJECTED_PREPAID_PACKAGE_EXPIRED</code> Account credits are past their validity period. Top up your sub-account with credits to extend the validity period.</td>\n</tr>\n<tr>\n<td>18</td>\n<td><code>REJECTED_DESTINATION_NOT_REGISTERED</code> Your account has been set up for submission only to a single number for testing purposes. Contact your account manager.</td>\n</tr>\n<tr>\n<td>19</td>\n<td>REJECTED_ROUTE_NOT_AVAILABLE Message has been received on the system. However, your account has not been set up to send messages, that is, no routes on your account are available for further submission.</td>\n</tr>\n<tr>\n<td>20</td>\n<td>REJECTED_FLOODING_FILTER Message has been rejected due to an anti-flooding mechanism. By default, a single number can only receive 20 varied and 6 identical messages per hour. If a requirement exists, the limitation can be extended per account on request to your account manager.</td>\n</tr>\n<tr>\n<td>21</td>\n<td><code>REJECTED_SYSTEM_ERROR</code> The request has been rejected due to an expected system error. Retry the submission or contact our Technical Support team for more details.</td>\n</tr>\n<tr>\n<td>23</td>\n<td><code>REJECTED_DUPLICATE_MESSAGE_ID</code> The request has been rejected due to a duplicate message ID specified in the submit request; the message IDs should be a unique value.</td>\n</tr>\n<tr>\n<td>24</td>\n<td><code>REJECTED_INVALID_UDH</code>  <br />  <br />Message has been received and our system detected the message was formatted incorrectly because of either an invalid ESM class parameter (fully featured binary message API method) or an inaccurate amount of characters when using esmclass:64 (UDH). For more information, visit the articles below or contact our support team for clarification.  <br />  <br />  <br /><a href=\"https://en.wikipedia.org/wiki/User_Data_Header\">User Data Header</a>  <br /><a href=\"https://en.wikipedia.org/wiki/Concatenated_SMS\">Concatenated SMS</a></td>\n</tr>\n<tr>\n<td>25</td>\n<td><code>REJECTED_MESSAGE_TOO_LONG</code> Message has been received, but the total message length is more than 25 parts, or the message text exceeds 4000 bytes as per our system limitation.</td>\n</tr>\n<tr>\n<td>51</td>\n<td><code>MISSING_TO</code> The request has been received, but the <code>to</code> parameter has not been set, or it is empty, that is, there must be a valid recipient to send the message to.</td>\n</tr>\n<tr>\n<td>52</td>\n<td><code>REJECTED_DESTINATION</code> The request has been received, but the destination is invalid—the number prefix is incorrect as it does not match a valid number prefix by any mobile operator. Number length is also taken into consideration when verifying number validity.</td>\n</tr>\n<tr>\n<td>87</td>\n<td><code>SIGNALS_BLOCKED</code> Message has been rejected due to an anti-fraud mechanism. If the message is deemed fraudulent, it will not be charged.</td>\n</tr>\n<tr>\n<td>99</td>\n<td><code>REJECTED</code> The call was rejected/declined by the end user at the receiving end.</td>\n</tr>\n<tr>\n<td>100</td>\n<td><code>UNDELIVERABLE_REJECTED_PLATFORM</code> The request was rejected due to being invalid, malformed, or because the service is temporarily unavailable. Review the request parameters and structure, and try again when the service is accessible.</td>\n</tr>\n</tbody>\n</table>\n</div>","_postman_id":"ca2e7f15-53f4-4373-ba1a-ae780bd01bff"},{"name":"VOICE status codes","item":[],"id":"5408d73e-2804-473b-9d48-fc8a803cc92f","description":"<h3 id=\"rejected-group-id-5---voice-status-codes\">REJECTED (group id: 5) - voice status codes</h3>\n<p>Message has been received, but has either been rejected by our system, or the operator has reverted the rejected as final status.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Id</th>\n<th>Status</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>53</td>\n<td><code>REJECTED_INVALID_AUDIO_FILE_URL</code>  <br />  <br />- The URL of audio file is invalid and could not be read properly.</td>\n</tr>\n<tr>\n<td>54</td>\n<td><code>REJECTED_UNSUPPORTED_LANGUAGE</code>  <br />  <br />- The language submitted within the request is not supported and request couldn't be processed correctly.</td>\n</tr>\n<tr>\n<td>55</td>\n<td><code>REJECTED_MESSAGE_IS_EMPTY</code>  <br />  <br />- Native to Voice services, this status is returned in case there is no text sent in your Voice message request.</td>\n</tr>\n<tr>\n<td>56</td>\n<td><code>REJECTED_INVALID_NOTIFY_URL</code>  <br />  <br />- Native to Voice services, this status is returned in case the notifyUrl parameter is not formatter properly. Please revisit the documentation for voice messages in this collection.</td>\n</tr>\n<tr>\n<td>57</td>\n<td><code>REJECTED_INVALID_NOTIFY_CONTENT_TYPE</code>  <br />  <br />- Native to Voice services, this status is returned in case the notifyContentType parameter is not formatter properly. Please revisit the documentation for voice messages in this collection.</td>\n</tr>\n<tr>\n<td>58</td>\n<td><code>REJECTED_INVALID_DTMF_SIGN</code>  <br />  <br />- Defined value for repeating message is invalid and must be positive number.</td>\n</tr>\n<tr>\n<td>59</td>\n<td><code>REJECTED_INVALID_DTMF_TIMEOUT</code>  <br />  <br />- Defined value for the waiting period is invalid and must be positive number.</td>\n</tr>\n<tr>\n<td>60</td>\n<td><code>REJECTED_INVALID_RING_TIMEOUT</code>  <br />  <br />- Defined value for duration of call is invalid and must be positive number.</td>\n</tr>\n<tr>\n<td>61</td>\n<td><code>REJECTED_INVALID_CALL_TIMEOUT</code>  <br />  <br />- Defined value for total period of call is invalid and must be positive number.</td>\n</tr>\n<tr>\n<td>62</td>\n<td><code>REJECTED_INVALID_MACHINE_DETECTION</code>  <br />  <br />- The action which attempts to detect answering machines at the beginning of the call is invalid.</td>\n</tr>\n<tr>\n<td>63</td>\n<td><code>REJECTED_INVALID_ACTIONS</code>  <br />  <br />- Actions submitted in HTTP API request are invalid.</td>\n</tr>\n<tr>\n<td>64</td>\n<td><code>REJECTED_INVALID_ACTION_GROUPS</code>  <br />  <br />- Action groups submitted in HTTP API request are invalid.</td>\n</tr>\n<tr>\n<td>83</td>\n<td><code>REJECTED_MACHINE_DECTION_DISALBED</code>  <br />  <br />Machine detection is not enabled. Contact your dedicated Account manager.</td>\n</tr>\n<tr>\n<td>87</td>\n<td><code>REJECTED_INVALID_DELIVERY_TIME_WINDOW</code>  <br />  <br />Invalid deliveryTimeWindow. The time gap between from and to cannot be less than 1 hour.</td>\n</tr>\n<tr>\n<td>91</td>\n<td><code>REJECTED_INVALID_SSML</code>  <br />Submitted message text contains invalid SSML.</td>\n</tr>\n</tbody>\n</table>\n</div>","_postman_id":"5408d73e-2804-473b-9d48-fc8a803cc92f"},{"name":"ERROR codes","item":[],"id":"58bebf83-edfa-4a31-bb93-5f09da4130e9","description":"<p>Error object can be returned as part of the send message response or Delivery report response.</p>\n<p>Error object example:</p>\n<p>JSON</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>{  \n   \"groupId\":0,\n   \"groupName\":\"OK\",\n   \"id\":0,\n   \"name\":\"NO_ERROR\",\n   \"description\":\"No Error\",\n   \"permanent\":false\n}\n</code></pre>","_postman_id":"58bebf83-edfa-4a31-bb93-5f09da4130e9"},{"name":"GENERAL error codes","item":[],"id":"106c8a3b-efd4-42e3-88d7-ff6ccafd0b25","description":"<p>OK (group id: 0) - general error codes</p>\n<p>The request has been completed successfully.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>ID</th>\n<th>Permanent</th>\n<th>Error</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>0</td>\n<td>false</td>\n<td><code>NO_ERROR</code>  <br />  <br />- There is no error description provided. Mostly returned for successful delivery, or when error code was not returned by the operator.</td>\n</tr>\n</tbody>\n</table>\n</div><p>HANDSET_ERRORS (group id: 1) - general error codes</p>\n<p>The request has not been completed due to handset-related issues.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>ID</th>\n<th>Permanent</th>\n<th>Error</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1</td>\n<td>true</td>\n<td><code>EC_UNKNOWN_SUBSCRIBER</code>  <br />  <br />- The number does not exist or it has not been assigned to any active subscriber in the operator’s user database.</td>\n</tr>\n<tr>\n<td>2</td>\n<td>false</td>\n<td><code>EC_UNKNOWN_BASE_STATION</code>  <br />  <br />Suggests an error involving an unidentified or unrecognized base station, often in the context of network or communication systems. This could be due to a missing or inaccessible base station.</td>\n</tr>\n<tr>\n<td>5</td>\n<td>false</td>\n<td><code>EC_UNIDENTIFIED_SUBSCRIBER</code>  <br />  <br />- Unidentified Subscriber</td>\n</tr>\n<tr>\n<td>6</td>\n<td>false</td>\n<td><code>EC_ABSENT_SUBSCRIBER_SM</code>  <br />  <br />- The subscriber is detected unavailable as there was no paging response from the handset. This is often due to the handset being switched off or low signal area. Applies to MAP protocol version 3.</td>\n</tr>\n<tr>\n<td>7</td>\n<td>false</td>\n<td><code>EC_UNKNOWN_EQUIPMENT</code>  <br />  <br />- The mobile device has not been recognized by EIR (Equipment Identity Register) during device verification on the MAP protocol level at operator’s infrastructure.</td>\n</tr>\n<tr>\n<td>8</td>\n<td>false</td>\n<td><code>EC_ROAMING_NOT_ALLOWED</code>  <br />  <br />- The subscriber is currently in roaming in another country or other operator’s infrastructure - roaming delivery is not guaranteed due to lack of roaming agreements between many different operators.</td>\n</tr>\n<tr>\n<td>9</td>\n<td>true</td>\n<td><code>EC_ILLEGAL_SUBSCRIBER</code>  <br />  <br />- Illegal Subscriber</td>\n</tr>\n<tr>\n<td>11</td>\n<td>true</td>\n<td><code>EC_TELESERVICE_NOT_PROVISIONED</code>  <br />  <br />- The subscriber’s mobile service has been suspended by the operator.</td>\n</tr>\n<tr>\n<td>12</td>\n<td>true</td>\n<td><code>EC_ILLEGAL_EQUIPMENT</code>  <br />  <br />- Illegal Equipment</td>\n</tr>\n<tr>\n<td>13</td>\n<td>false</td>\n<td><code>EC_CALL_BARRED</code>  <br />  <br />- Message is rejected due to barring of message service; blocking is set by operator or subscriber for the number.</td>\n</tr>\n<tr>\n<td>21</td>\n<td>false</td>\n<td><code>EC_FACILITY_NOT_SUPPORTED</code>  <br />  <br />- Facility Not Supported</td>\n</tr>\n<tr>\n<td>27</td>\n<td>false</td>\n<td><code>EC_ABSENT_SUBSCRIBER</code>  <br />  <br />- The subscriber is offline in the network, as confirmed by the handset’s paging response. This is often due to the handset being switched off.</td>\n</tr>\n<tr>\n<td>31</td>\n<td>false</td>\n<td><code>EC_SUBSCRIBER_BUSY_FOR_MT_SMS</code>  <br />  <br />- Subscriber Busy For Mt SMS</td>\n</tr>\n<tr>\n<td>32</td>\n<td>false</td>\n<td><code>EC_SM_DELIVERY_FAILURE</code>  <br />  <br />- SM Delivery Failure</td>\n</tr>\n<tr>\n<td>33</td>\n<td>false</td>\n<td><code>EC_MESSAGE_WAITING_LIST_FULL</code>  <br />  <br />- Message Waiting List Full</td>\n</tr>\n<tr>\n<td>34</td>\n<td>false</td>\n<td><code>EC_SYSTEM_FAILURE</code>  <br />  <br />- System Failure</td>\n</tr>\n<tr>\n<td>35</td>\n<td>false</td>\n<td><code>EC_DATA_MISSING</code>  <br />  <br />- Data Missing</td>\n</tr>\n<tr>\n<td>36</td>\n<td>false</td>\n<td><code>EC_UNEXPECTED_DATA_VALUE</code>  <br />  <br />- Unexpected Data Value</td>\n</tr>\n<tr>\n<td>255</td>\n<td>false</td>\n<td><code>EC_UNKNOWN_ERROR</code>  <br />  <br />- Unknown Error</td>\n</tr>\n<tr>\n<td>256</td>\n<td>false</td>\n<td><code>EC_SM_DF_MEMORYCAPACITYEXCEEDED</code>  <br />  <br />- There has been a mobile subscriber equipment error whereas the handset memory has been exceeded.</td>\n</tr>\n<tr>\n<td>257</td>\n<td>false</td>\n<td><code>EC_SM_DF_EQUIPMENTPROTOCOLERROR</code>  <br />  <br />- There has been a mobile subscriber equipment error.</td>\n</tr>\n<tr>\n<td>258</td>\n<td>false</td>\n<td><code>EC_SM_DF_EQUIPMENTNOTSM_EQUIPPED</code>  <br />  <br />- There has been a mobile subscriber equipment error.</td>\n</tr>\n<tr>\n<td>259</td>\n<td>false</td>\n<td><code>EC_SM_DF_UNKNOWNSERVICECENTRE</code>  <br />  <br />- There has been a mobile subscriber equipment error.</td>\n</tr>\n<tr>\n<td>260</td>\n<td>false</td>\n<td><code>EC_SM_DF_SC_CONGESTION</code>  <br />  <br />- There has been a mobile subscriber equipment error.</td>\n</tr>\n<tr>\n<td>261</td>\n<td>false</td>\n<td><code>EC_SM_DF_INVALIDSME_ADDRESS</code>  <br />  <br />- There has been a mobile subscriber equipment error.</td>\n</tr>\n<tr>\n<td>262</td>\n<td>false</td>\n<td><code>EC_SM_DF_SUBSCRIBERNOTSC_SUBSCRIBER</code>  <br />  <br />- There has been a mobile subscriber equipment error.</td>\n</tr>\n<tr>\n<td>500</td>\n<td>false</td>\n<td><code>EC_PROVIDER_GENERAL_ERROR</code>  <br />  <br />- General network protocol error caused by incompatible operator network protocol versions or parameters between two network components.</td>\n</tr>\n<tr>\n<td>502</td>\n<td>false</td>\n<td><code>EC_NO_RESPONSE</code>  <br />  <br />- The message has been successfully processed and forwarded to the operator, but no response was returned from the operator upon the message submit request, or such error was reverted by the operator. The error also applies to similar errors on SS7 network level.</td>\n</tr>\n<tr>\n<td>503</td>\n<td>false</td>\n<td><code>EC_SERVICE_COMPLETION_FAILURE</code>  <br />  <br />- General network protocol error caused by incompatible operator network protocol versions or parameters between two network components.</td>\n</tr>\n<tr>\n<td>504</td>\n<td>false</td>\n<td><code>EC_UNEXPECTED_RESPONSE_FROM_PEER</code>  <br />  <br />- General network protocol error caused by incompatible operator network protocol versions or parameters between two network components.</td>\n</tr>\n<tr>\n<td>507</td>\n<td>false</td>\n<td><code>EC_MISTYPED_PARAMETER</code>  <br />  <br />- General network protocol error caused by incompatible operator network protocol versions or parameters between two network components.</td>\n</tr>\n<tr>\n<td>508</td>\n<td>false</td>\n<td><code>EC_NOT_SUPPORTED_SERVICE</code>  <br />  <br />- General network protocol error caused by incompatible operator network protocol versions or parameters between two network components.</td>\n</tr>\n<tr>\n<td>509</td>\n<td>false</td>\n<td><code>EC_DUPLICATED_INVOKE_ID</code>  <br />  <br />- General network protocol error caused by incompatible operator network protocol versions or parameters between two network components.</td>\n</tr>\n<tr>\n<td>565</td>\n<td>true</td>\n<td><code>EC_CANNOT_RECEIVE_SC</code>  <br />  <br />- End users connected to this MVNO cannot receive Short Code messages. The mobile operator rejected the message as the end user is connected to their network via a mobile virtual network operator (MVNO). This restriction is on Short Code messages.</td>\n</tr>\n<tr>\n<td>573</td>\n<td>true</td>\n<td><code>EC_SC_BLOCKED_BY_END_USER</code>  <br />  <br />- The end user has asked their mobile operator to block any messages sent from your Short Code. Additional messages from the same Short Code must not be sent to the phone number unless the end user opts in again.</td>\n</tr>\n<tr>\n<td>581</td>\n<td>false</td>\n<td><code>EC_USER_OUT_OF_CREDIT</code>  <br />  <br />- End user out of prepay credit. The end user does not have enough credit on their phone account to receive the message. Message sending can be retried every 24 hours for no more than seven days.</td>\n</tr>\n<tr>\n<td>628</td>\n<td>true</td>\n<td><code>EC_TEMPORARY_HANDSET_FAILURE</code>  <br />  <br />- Temporary handset failure.</td>\n</tr>\n<tr>\n<td>629</td>\n<td>true</td>\n<td><code>EC_DEST_ADDRESS_UNABLE_TO_RECEIVE_SMS</code>  <br />  <br />- Destination address unable to receive SMS.</td>\n</tr>\n<tr>\n<td>1024</td>\n<td>false</td>\n<td><code>EC_OR_APPCONTEXTNOTSUPPORTED</code>  <br />  <br />- General network protocol error caused by incompatible operator network protocol versions or parameters between two network components.</td>\n</tr>\n<tr>\n<td>1025</td>\n<td>false</td>\n<td><code>EC_OR_INVALIDDESTINATIONREFERENCE</code>  <br />  <br />- General network protocol error caused by incompatible operator network protocol versions or parameters between two network components.</td>\n</tr>\n<tr>\n<td>1026</td>\n<td>false</td>\n<td><code>EC_OR_INVALIDORIGINATINGREFERENCE</code>  <br />  <br />- General network protocol error caused by incompatible operator network protocol versions or parameters between two network components.</td>\n</tr>\n<tr>\n<td>1027</td>\n<td>false</td>\n<td><code>EC_OR_ENCAPSULATEDAC_NOTSUPPORTED</code>  <br />  <br />- General network protocol error caused by incompatible operator network protocol versions or parameters between two network components.</td>\n</tr>\n<tr>\n<td>1028</td>\n<td>false</td>\n<td><code>EC_OR_TRANSPORTPROTECTIONNOTADEQUATE</code>  <br />  <br />- General network protocol error caused by incompatible operator network protocol versions or parameters between two network components.</td>\n</tr>\n<tr>\n<td>1029</td>\n<td>false</td>\n<td><code>EC_OR_NOREASONGIVEN</code>  <br />  <br />- General network protocol error caused by incompatible operator network protocol versions or parameters between two network components.</td>\n</tr>\n<tr>\n<td>1030</td>\n<td>false</td>\n<td><code>EC_OR_POTENTIALVERSIONINCOMPATIBILITY</code>  <br />  <br />- General network protocol error caused by incompatible operator network protocol versions or parameters between two network components.</td>\n</tr>\n<tr>\n<td>1031</td>\n<td>false</td>\n<td><code>EC_OR_REMOTENODENOTREACHABLE</code>  <br />  <br />- Mobile subscriber was not reachable due to a network operator protocol error.</td>\n</tr>\n<tr>\n<td>1152</td>\n<td>false</td>\n<td><code>EC_NNR_NOTRANSLATIONFORANADDRESSOFSUCHNATURE</code>  <br />  <br />- Mobile subscriber was not reachable due to a network operator protocol error.</td>\n</tr>\n<tr>\n<td>1153</td>\n<td>false</td>\n<td><code>EC_NNR_NOTRANSLATIONFORTHISSPECIFICADDRESS</code>  <br />  <br />- No Translation For This Specific Address</td>\n</tr>\n<tr>\n<td>1154</td>\n<td>false</td>\n<td><code>EC_NNR_SUBSYSTEMCONGESTION</code>  <br />  <br />- Mobile subscriber was not reachable due to a network operator protocol error.</td>\n</tr>\n<tr>\n<td>1155</td>\n<td>false</td>\n<td><code>EC_NNR_SUBSYSTEMFAILURE</code>  <br />  <br />- Mobile subscriber was not reachable due to a network operator protocol error.</td>\n</tr>\n<tr>\n<td>1156</td>\n<td>false</td>\n<td><code>EC_NNR_UNEQUIPPEDUSER</code>  <br />  <br />- Mobile subscriber was not reachable due to a network operator protocol error.</td>\n</tr>\n<tr>\n<td>1157</td>\n<td>false</td>\n<td><code>EC_NNR_MTPFAILURE</code>  <br />  <br />- Mobile subscriber was not reachable due to a network operator protocol error.</td>\n</tr>\n<tr>\n<td>1158</td>\n<td>false</td>\n<td><code>EC_NNR_NETWORKCONGESTION</code>  <br />  <br />- Mobile subscriber was not reachable due to a network operator protocol error.</td>\n</tr>\n<tr>\n<td>1159</td>\n<td>false</td>\n<td><code>EC_NNR_UNQUALIFIED</code>  <br />  <br />- Mobile subscriber was not reachable due to a network operator protocol error.</td>\n</tr>\n<tr>\n<td>1160</td>\n<td>false</td>\n<td><code>EC_NNR_ERRORINMESSAGETRANSPORTXUDT</code>  <br />  <br />- Mobile subscriber was not reachable due to a network operator protocol error.</td>\n</tr>\n<tr>\n<td>1161</td>\n<td>false</td>\n<td><code>EC_NNR_ERRORINLOCALPROCESSINGXUDT</code>  <br />  <br />- Mobile subscriber was not reachable due to a network operator protocol error.</td>\n</tr>\n<tr>\n<td>1162</td>\n<td>false</td>\n<td><code>EC_NNR_DESTINATIONCANNOTPERFORMREASSEMBLYXUDT</code>  <br />  <br />- Mobile subscriber was not reachable due to a network operator protocol error.</td>\n</tr>\n<tr>\n<td>1163</td>\n<td>false</td>\n<td><code>EC_NNR_SCCPFAILURE</code>  <br />  <br />- Mobile subscriber was not reachable due to a network operator protocol error.</td>\n</tr>\n<tr>\n<td>1164</td>\n<td>false</td>\n<td><code>EC_NNR_HOPCOUNTERVIOLATION</code>  <br />  <br />- Mobile subscriber was not reachable due to a network operator protocol error.</td>\n</tr>\n<tr>\n<td>1165</td>\n<td>false</td>\n<td><code>EC_NNR_SEGMENTATIONNOTSUPPORTED</code>  <br />  <br />- Mobile subscriber was not reachable due to a network operator protocol error.</td>\n</tr>\n<tr>\n<td>1166</td>\n<td>false</td>\n<td><code>EC_NNR_SEGMENTATIONFAILURE</code>  <br />  <br />- Mobile subscriber was not reachable due to a network operator protocol error.</td>\n</tr>\n<tr>\n<td>1281</td>\n<td>false</td>\n<td><code>EC_UA_USERSPECIFICREASON</code>  <br />  <br />- Message was aborted by network peer because of a network protocol error.</td>\n</tr>\n<tr>\n<td>1282</td>\n<td>false</td>\n<td><code>EC_UA_USERRESOURCELIMITATION</code>  <br />  <br />- Message was aborted by network peer because of a network protocol error.</td>\n</tr>\n<tr>\n<td>1283</td>\n<td>false</td>\n<td><code>EC_UA_RESOURCEUNAVAILABLE</code>  <br />  <br />- Message was aborted by network peer because of a network protocol error.</td>\n</tr>\n<tr>\n<td>1284</td>\n<td>false</td>\n<td><code>EC_UA_APPLICATIONPROCEDURECANCELLATION</code>  <br />  <br />- Message was aborted by network peer because of a network protocol error.</td>\n</tr>\n<tr>\n<td>1536</td>\n<td>false</td>\n<td><code>EC_PA_PROVIDERMALFUNCTION</code>  <br />  <br />- Message was aborted due to other network protocol errors.</td>\n</tr>\n<tr>\n<td>1537</td>\n<td>false</td>\n<td><code>EC_PA_SUPPORTINGDIALOGORTRANSACTIONREALEASED</code>  <br />  <br />- Message was aborted due to other network protocol errors.</td>\n</tr>\n<tr>\n<td>1538</td>\n<td>false</td>\n<td><code>EC_PA_RESSOURCELIMITATION</code>  <br />  <br />- Message was aborted due to other network protocol errors.</td>\n</tr>\n<tr>\n<td>1539</td>\n<td>false</td>\n<td><code>EC_PA_MAINTENANCEACTIVITY</code>  <br />  <br />- Message was aborted due to other network protocol errors.</td>\n</tr>\n<tr>\n<td>1540</td>\n<td>false</td>\n<td><code>EC_PA_VERSIONINCOMPATIBILITY</code>  <br />  <br />- Message was aborted due to other network protocol errors.</td>\n</tr>\n<tr>\n<td>1541</td>\n<td>false</td>\n<td><code>EC_PA_ABNORMALMAPDIALOG</code>  <br />  <br />- Message was aborted due to other network protocol errors.</td>\n</tr>\n<tr>\n<td>1792</td>\n<td>false</td>\n<td><code>EC_NC_ABNORMALEVENTDETECTEDBYPEER</code>  <br />  <br />- Message was aborted due to other network protocol errors.</td>\n</tr>\n<tr>\n<td>1793</td>\n<td>false</td>\n<td><code>EC_NC_RESPONSEREJECTEDBYPEER</code>  <br />  <br />- Message was aborted due to other network protocol errors.</td>\n</tr>\n<tr>\n<td>1794</td>\n<td>false</td>\n<td><code>EC_NC_ABNORMALEVENTRECEIVEDFROMPEER</code>  <br />  <br />- Message was aborted due to other network protocol errors.</td>\n</tr>\n<tr>\n<td>1795</td>\n<td>false</td>\n<td><code>EC_NC_MESSAGECANNOTBEDELIVEREDTOPEER</code>  <br />  <br />- Message was aborted due to other network protocol errors.</td>\n</tr>\n<tr>\n<td>1796</td>\n<td>false</td>\n<td><code>EC_NC_PROVIDEROUTOFINVOKE</code>  <br />  <br />- Message was aborted due to other network protocol errors.</td>\n</tr>\n</tbody>\n</table>\n</div><p>USER_ERRORS (group id: 2) - general error codes</p>\n<p>User error occurred.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>ID</th>\n<th>Permanent</th>\n<th>Error</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>323</td>\n<td>true</td>\n<td><code>EC_INVALID_REQUEST_TYPE</code>  <br />  <br />- The request type was invalid.</td>\n</tr>\n<tr>\n<td>351</td>\n<td>false</td>\n<td><code>EC_INVALID_DESTINATION_ADDRESS</code>  <br />  <br />- Invalid destination address. Possible reasons for receiving this error for the following mobile operators might be:  <br /><strong>Any operator:</strong>  <br />-The mobile number is not on the mobile operator's network.  <br />-The mobile number has been deactivated.  <br /><strong>T-Mobile and MetroPCS:</strong>  <br />-The phone number belongs to a prepaid user who does not have enough credit to receive a message.  <br /><strong>T-Mobile:</strong>  <br />-The end user is not provisioned to receive a message from all short codes (or from specific short codes).  <br />-The end user is on an MVNO connected via T-Mobile.  <br />-T-Mobile does not deliver messages from short codes to end users on MVNOs.  <br /><strong>AT&amp;T (US):</strong>  <br />- The phone number belongs to a prepaid user who does not have enough credit to receive a message, the phone number is not provisioned for any messages, or the phone number could be blocked due to a spam complaint.</td>\n</tr>\n<tr>\n<td>352</td>\n<td>true</td>\n<td><code>EC_INVALID_REQUEST_DESTINATION</code>  <br />  <br />- Invalid request - destination address country code is not recognized.</td>\n</tr>\n<tr>\n<td>355</td>\n<td>true</td>\n<td><code>EC_MSG_TEXT_TOO_LONG</code>  <br />  <br />- Message text is too long.</td>\n</tr>\n<tr>\n<td>368</td>\n<td>true</td>\n<td><code>EC_INVALID_SOURCE_ADDRESS</code>  <br />  <br />- Invalid source address value. The mobile operator rejected the message with an invalid MT source address error. Contact your account manager to determine if your MT source address should be supported by the end user's mobile operator.</td>\n</tr>\n<tr>\n<td>375</td>\n<td>true</td>\n<td><code>EC_SOURCE_ADDRESS_IS_BLOCKED</code>  <br />  <br />- Source address (recipient) is blocked or is not provisioned.</td>\n</tr>\n<tr>\n<td>433</td>\n<td>true</td>\n<td><code>EC_ACCOUNT_ACCESS_DENIED</code>  <br />  <br />- Account access denied.</td>\n</tr>\n<tr>\n<td>488</td>\n<td>true</td>\n<td><code>EC_TF_NUMBER_NOT_VERIFIED</code>  <br />  <br />- ''Toll-Free Number Not Veriﬁed'' which indicates that the number has either gone over the limit or they are trying to send to Canada and the number is not verified. Contact your account manager to get the TFN verified.</td>\n</tr>\n<tr>\n<td>541</td>\n<td>false</td>\n<td><code>EC_LIMIT_REACHED</code>  <br />  <br />- Carrier sending limit has been reached. The message was blocked by AT&amp;T because the TPS (transactions per second) limit on your messaging campaign has been exceeded.</td>\n</tr>\n<tr>\n<td>542</td>\n<td>false</td>\n<td><code>EC_QUOTA_REACHED</code>  <br />  <br />- Carrier daily quota reached. The message was blocked by T-Mobile because the daily volume limit for your brand has been exceeded. You cannot resend the message until the next day.</td>\n</tr>\n<tr>\n<td>572</td>\n<td>true</td>\n<td><code>EC_CAMPAIGNID_NOT_PROVISIONED</code>  <br />  <br />- Program ID or campaign ID is not provisioned for this mobile operator or is not active.</td>\n</tr>\n<tr>\n<td>577</td>\n<td>true</td>\n<td><code>EC_ACC_NOT_PROVISIONED_TO_SMS_DEMO_SC</code>  <br />  <br />- Account not provisioned to use SMS demo short code.</td>\n</tr>\n<tr>\n<td>578</td>\n<td>true</td>\n<td><code>EC_EXCEEDED_THE_TIME_LIMIT_OF_SMS_DEMO</code>  <br />  <br />- Exceeded the time limit for using SMS demo.</td>\n</tr>\n<tr>\n<td>579</td>\n<td>true</td>\n<td><code>EC_DEST_ADDRESS_NOT_IN_SMS_DEMO</code>  <br />  <br />- Destination address not in whitelist for SMS demo.</td>\n</tr>\n<tr>\n<td>580</td>\n<td>true</td>\n<td><code>EC_EXCEEDED_THE_MAX_NUMBER</code>  <br />  <br />- Exceeded the maximum number of demo requests.</td>\n</tr>\n<tr>\n<td>594</td>\n<td>true</td>\n<td><code>EC_INVALID_GLOBAL_CAMPAIGN_ID</code>  <br />  <br />- Invalid global campaign ID.</td>\n</tr>\n<tr>\n<td>597</td>\n<td>true</td>\n<td><code>EC_ACC_HAS_NO_ADRESS_FOR_DESR</code>  <br />  <br />- Account is not provisioned with the address that can reach the destination.</td>\n</tr>\n<tr>\n<td>598</td>\n<td>true</td>\n<td><code>EC_INTERACTION_NOT_SUPPORTED</code>  <br />  <br />- Interaction not supported for message destination.</td>\n</tr>\n<tr>\n<td>601</td>\n<td>true</td>\n<td><code>EC_ACC_NOT_2_WAY</code>  <br />  <br />- Account is not provisioned for global two-way SMS.</td>\n</tr>\n<tr>\n<td>603</td>\n<td>true</td>\n<td><code>EC_CONTENT_BLOCKED</code>  <br />  <br />- Content blocked by user opt-out (MO: STOP). This code can be returned in a delivery receipt for an MT originating from a North American, SMS-enabled toll-free number or an SMS-enabled landline number. Messaging can resume to the end user if the end user opts back in to your program.</td>\n</tr>\n<tr>\n<td>604</td>\n<td>true</td>\n<td><code>EC_BLOCKED_BY_CAMPAIGN_BLACKLIST</code>  <br />  <br />- Content blocked by campaign blocklist.</td>\n</tr>\n<tr>\n<td>607</td>\n<td>true</td>\n<td><code>EC_BLOCKED_AS_SPAM</code>  <br />  <br />- This message was identified as spam and cannot be delivered</td>\n</tr>\n<tr>\n<td>2049</td>\n<td>true</td>\n<td><code>EC_IMSI_BLACKLISTED</code>  <br />  <br />- IMSI blocklisted</td>\n</tr>\n<tr>\n<td>2052</td>\n<td>true</td>\n<td><code>EC_BLACKLISTED_DESTINATIONADDRESS</code>  <br />  <br />- The destination number has been blocklisted either at the operator`s request or on your account via the VHD web interface. Go to the web interface to remove the blocklist on your account or contact Support for more information.</td>\n</tr>\n<tr>\n<td>2053</td>\n<td>true</td>\n<td><code>EC_BLACKLISTED_SENDERADDRESS</code>  <br />  <br />- The sender number has been blocklisted either at the operator request or on your account via VHD web interface. Go to the web interface to remove the blocklist on your account or contact Support for more information.</td>\n</tr>\n<tr>\n<td>2053</td>\n<td>true</td>\n<td><code>EC_SOURCE_ADDRESS_BLACKLISTED</code>  <br />  <br />- Source address is blocklisted on the VHD account.</td>\n</tr>\n<tr>\n<td>4096</td>\n<td>true</td>\n<td><code>EC_INVALID_PDU_FORMAT</code>  <br />  <br />- Invalid PDU Format</td>\n</tr>\n<tr>\n<td>4099</td>\n<td>true</td>\n<td><code>EC_MONTHLY_LIMIT_REACHED</code>  <br />  <br />- Your account monthly credit limit has been reached. For further financial assistance, please contact your account manager.</td>\n</tr>\n<tr>\n<td>4100</td>\n<td>true</td>\n<td><code>EC_MESSAGE_CANCELED</code>  <br />  <br />- The request was received, but has not been sent to the next instance within its validity period and has expired with the appropriate error code EC_MESSAGE_CANCELED, or the same error code was reverted from the operator.</td>\n</tr>\n<tr>\n<td>4101</td>\n<td>true</td>\n<td><code>EC_VALIDITYEXPIRED</code>  <br />  <br />- The message was sent to the next instance and has not been delivered within the message validity period, thus it has expired with the appropriate error code EC_VALIDITYEXPIRED or the error code was reverted from the operator.</td>\n</tr>\n<tr>\n<td>4102</td>\n<td>true</td>\n<td><code>EC_NOTSUBMITTEDTOSMPPCHANNEL</code>  <br />  <br />- Inbound SM can not be transferred via SMPP due to the lack of SMPP connectivity.</td>\n</tr>\n<tr>\n<td>4103</td>\n<td>true</td>\n<td><code>EC_DESTINATION_FLOODING</code>  <br />  <br />- Related to status REJECTED_FLOODING_FILTER, the message is rejected due to the number of messages sent to a single number.</td>\n</tr>\n<tr>\n<td>4104</td>\n<td>true</td>\n<td><code>EC_DESTINATION_TXT_FLOODING</code>  <br />  <br />- Related to status REJECTED_FLOODING_FILTER, the message is rejected due to the number of identical messages sent to a single number.</td>\n</tr>\n</tbody>\n</table>\n</div><p>OPERATOR_ERRORS (group id: 3) - general error codes</p>\n<p>The request has not been completed due to operator issues.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>ID</th>\n<th>Permanent</th>\n<th>Error</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>10</td>\n<td>true</td>\n<td><code>EC_BEARER_SERVICE_NOT_PROVISIONED</code>  <br />  <br />- Bearer Service Not Provisioned</td>\n</tr>\n<tr>\n<td>20</td>\n<td>false</td>\n<td><code>EC_SS_INCOMPATIBILITY</code>  <br />  <br />- SS Incompatibility</td>\n</tr>\n<tr>\n<td>51</td>\n<td>true</td>\n<td><code>EC_RESOURCE_LIMITATION</code>  <br />  <br />- Indicates that invoked MAP operation could not be finished due to the network congestion - this is an SS7 network congestion error on the MAP protocol level.</td>\n</tr>\n<tr>\n<td>71</td>\n<td>false</td>\n<td><code>EC_UNKNOWN_ALPHABET</code>  <br />  <br />- Unknown Alphabet</td>\n</tr>\n<tr>\n<td>345</td>\n<td>true</td>\n<td><code>EC_OPERATOR_NOT_FOUND</code>  <br />  <br />- Mobile operator not found for the destination address. The service performed a dynamic carrier lookup for the destination address, but it could not be identified; or, the MT source address is not a North American toll-free phone number or landline.</td>\n</tr>\n<tr>\n<td>501</td>\n<td>false</td>\n<td><code>EC_INVALID_RESPONSE_RECEIVED</code>  <br />  <br />- Invalid Response Received</td>\n</tr>\n<tr>\n<td>560</td>\n<td>true</td>\n<td><code>EC_SC_BLOCKED_FOR_END_USER</code>  <br />  <br />- Mobile operator blocking the end user from this Short Code</td>\n</tr>\n<tr>\n<td>561</td>\n<td>true</td>\n<td><code>EC_CONTENT_BLOCKED_BY_OPERATOR</code>  <br />  <br />- Content blocked by mobile operator for this end user.</td>\n</tr>\n<tr>\n<td>562</td>\n<td>true</td>\n<td><code>EC_SC_NOT_PROVISIONED</code>  <br />  <br />- Short code not provisioned with mobile operator. Contact your dedicated Account Manager if you believe that you are provisioned for the operator or if you want to begin provisioning.</td>\n</tr>\n<tr>\n<td>563</td>\n<td>true</td>\n<td><code>EC_SC_EXPIRED</code>  <br />  <br />- Short code expired with mobile operator. Contact your dedicated Account Manager if you believe that you are provisioned for the operator or if you want to begin provisioning.</td>\n</tr>\n<tr>\n<td>564</td>\n<td>true</td>\n<td><code>EC_SC_BLOCKED</code>  <br />  <br />- Short Code blocked by mobile operator. The mobile operator rejected the message as the Short Code is currently blocked from sending messages across their network. Contact your dedicated Account Manager if you are unsure why you received this error.</td>\n</tr>\n<tr>\n<td>566</td>\n<td>true</td>\n<td><code>EC_DESTINATION_BLOCKED_BY_OPERATOR</code>  <br />  <br />- The mobile operator is blocking the phone number from receiving messages from Short Codes. This is likely due to the end-user's account being suspended or barred in some way.</td>\n</tr>\n<tr>\n<td>568</td>\n<td>true</td>\n<td><code>EC_DESTINATION_NOT_SMS_PROVISIONED</code>  <br />  <br />- Destination address not provisioned for SMS.</td>\n</tr>\n<tr>\n<td>569</td>\n<td>true</td>\n<td><code>EC_DEST_ADDRESS_SUSPENDED</code>  <br />  <br />- Destination address suspended by the mobile operator.</td>\n</tr>\n<tr>\n<td>571</td>\n<td>false</td>\n<td><code>EC_CAMPAIGN_ID_REJECTED</code>  <br />  <br />- Program ID or Campaign ID rejected by mobile operator. This error applies to messages sent to US mobile operators. The error indicates the program ID or campaign ID in the message request is not provisioned with the mobile operator. Contact your dedicated Account Manager if you are unsure why you received this error.</td>\n</tr>\n<tr>\n<td>574</td>\n<td>true</td>\n<td><code>EEC_BLOCKED_NEW_SUBSCRIPTIONS_FOR_SC</code>  <br />  <br />- New subscriptions for this short code are blocked by the mobile operator. Indicates that for a given Short Code, new subscribers are not allowed to receive or send messages. However, existing subscribers are still allowed to receive and send messages.</td>\n</tr>\n<tr>\n<td>630</td>\n<td>true</td>\n<td><code>EC_DEST_OVERLOADED</code>  <br />  <br />- Destination overloaded.</td>\n</tr>\n<tr>\n<td>631</td>\n<td>true</td>\n<td><code>EC_MOBILE_OPERATOR_NETWORK_ERROR</code>  <br />  <br />- Mobile operator network error.</td>\n</tr>\n<tr>\n<td>632</td>\n<td>true</td>\n<td><code>EC_SMS_REJECTED_BY_MOBILE_OPERATOR</code>  <br />  <br />- SMS rejected by the mobile operator for attempted destination address.</td>\n</tr>\n<tr>\n<td>633</td>\n<td>true</td>\n<td><code>EC_UNKNOWN_MOBILE_OPERATOR</code>  <br />  <br />- Message failed due to an unknown mobile operator error.</td>\n</tr>\n<tr>\n<td>810</td>\n<td>true</td>\n<td><code>EC_FAILED_MESSAGE_DELIVERY</code>  <br />  <br />- Failed message delivery.</td>\n</tr>\n<tr>\n<td>811</td>\n<td>true</td>\n<td><code>EC_MESSAGE_EXPIRED</code>  <br />  <br />- Message expired before it reached handset.</td>\n</tr>\n<tr>\n<td>815</td>\n<td>true</td>\n<td><code>EC_MESSAGE_SUBMITTED_NOT_ACKED</code>  <br />  <br />- Message submitted to but not acknowledged by the mobile operator.</td>\n</tr>\n<tr>\n<td>2048</td>\n<td>false</td>\n<td><code>EC_TIME_OUT</code>  <br />  <br />- Time Out</td>\n</tr>\n<tr>\n<td>2050</td>\n<td>true</td>\n<td><code>EC_DEST_ADDRESS_BLACKLISTED</code>  <br />  <br />- The number was flagged as blocklisted in the DND (Do Not Disturb) blocklist provided by the operator, or the same error code was reverted by the operator.</td>\n</tr>\n<tr>\n<td>2051</td>\n<td>false</td>\n<td><code>EC_INVALIDMSCADDRESS</code>  <br />  <br />- Text blocklisted</td>\n</tr>\n<tr>\n<td>4097</td>\n<td>false</td>\n<td><code>EC_NOTSUBMITTEDTOGMSC</code>  <br />  <br />- Not Submitted To GMSC</td>\n</tr>\n<tr>\n<td>4102</td>\n<td>true</td>\n<td><code>EC_NOTSUBMITTEDTOSMPPCHANNEL</code>  <br />  <br />- Not Submitted To Smpp Channel</td>\n</tr>\n<tr>\n<td>5492</td>\n<td>true</td>\n<td><code>EC_DUPLICATE_MESSAGE</code>  <br />  <br />- The same message has already been sent to this destination address.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"voice-error-codes\">Voice error codes</h2>\n<p>OK (group id: 0) - voice error codes</p>\n<p>The request has been completed successfully.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>ID</th>\n<th>Permanent</th>\n<th>Error</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>5000</td>\n<td>true</td>\n<td><code>VOICE_ANSWERED</code>  <br />  <br />- The call has been received and answered.</td>\n</tr>\n<tr>\n<td>5001</td>\n<td>true</td>\n<td><code>VOICE_ANSWERED_MACHINE</code>  <br />  <br />- The call has been received and answered by a voice machine.</td>\n</tr>\n</tbody>\n</table>\n</div><p>HANDSET_ERRORS (group id: 1) - voice error codes</p>\n<p>The request has not been completed due to handset related issues.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>ID</th>\n<th>Permanent</th>\n<th>Error</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>5480</td>\n<td>false</td>\n<td><code>EC_VOICE_ERROR_TEMPORARILY_NOT_AVAILABLE</code>  <br />  <br />- Destination address is currently not available.</td>\n</tr>\n<tr>\n<td>5603</td>\n<td>false</td>\n<td><code>EC_DECLINE</code>  <br />  <br />- Destination does not wish to participate in the call or cannot do so.</td>\n</tr>\n</tbody>\n</table>\n</div><p>OPERATOR_ERRORS (group id: 3) - voice error codes</p>\n<p>The request has not been completed due to operator issues.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>ID</th>\n<th>Permanent</th>\n<th>Error</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>5002</td>\n<td>true</td>\n<td><code>EC_VOICE_USER_BUSY</code>  <br />  <br />- The end user is currently busy to receive the Voice call.</td>\n</tr>\n<tr>\n<td>5003</td>\n<td>true</td>\n<td><code>EC_VOICE_NO_ANSWER</code>  <br />  <br />- The end user received a call but didn’t answer it.</td>\n</tr>\n<tr>\n<td>5004</td>\n<td>true</td>\n<td><code>EC_VOICE_ERROR_DOWNLOADING_FILE</code>  <br />  <br />- The file specified in the HTTP request is inaccessible and could not have been downloaded.</td>\n</tr>\n<tr>\n<td>5005</td>\n<td>true</td>\n<td><code>EC_VOICE_ERROR_UNSUPPORTED_AUDIO_FORMAT</code>  <br />  <br />- The format of the file specified is not supported.</td>\n</tr>\n<tr>\n<td>5400</td>\n<td>false</td>\n<td><code>EC_VOICE_ERROR_BAD_REQUEST</code>  <br />  <br />- The received request was rejected because it wasn’t formatted correctly.</td>\n</tr>\n<tr>\n<td>5403</td>\n<td>false</td>\n<td><code>EC_VOICE_ERROR_FORBIDDEN</code>  <br />  <br />- The received request was rejected by the operator.</td>\n</tr>\n<tr>\n<td>5404</td>\n<td>false</td>\n<td><code>EC_VOICE_ERROR_DESTINATION_NOT_FOUND</code>  <br />  <br />- The server has definitive information that the user does not exist at the domain specified in the Request-URI.</td>\n</tr>\n<tr>\n<td>5407</td>\n<td>false</td>\n<td><code>EC_VOICE_ERROR_PROXY_AUTHENTICATION_REQUIRED</code>  <br />  <br />- The request requires user authentication on the operator’s end.</td>\n</tr>\n<tr>\n<td>5408</td>\n<td>false</td>\n<td><code>EC_VOICE_ERROR_REQUEST_TIMEOUT</code>  <br />  <br />- There was no coverage for a specific destination number or the end user couldn’t be found in time during the call.</td>\n</tr>\n<tr>\n<td>5410</td>\n<td>false</td>\n<td><code>EC_VOICE_ERROR_GONE</code>  <br />  <br />- The user existed once, but operator doesn’t support destination address anymore.</td>\n</tr>\n<tr>\n<td>5413</td>\n<td>false</td>\n<td><code>EC_VOICE_ERROR_REQUEST_ENTITY_TOO_LARGE</code>  <br />  <br />- Request entity-body is larger than the server is willing or able to process.</td>\n</tr>\n<tr>\n<td>5414</td>\n<td>false</td>\n<td><code>EC_VOICE_ERROR_REQUEST_URI_TOO_LONG</code>  <br />  <br />- The server is refusing to process the request because the Request-URI is longer than the server is willing to interpret (destination too long).</td>\n</tr>\n<tr>\n<td>5415</td>\n<td>false</td>\n<td><code>EC_VOICE_UNSUPPORTED_MEDIA_TYPE</code>  <br />  <br />- Format of the file is not supported.</td>\n</tr>\n<tr>\n<td>5481</td>\n<td>false</td>\n<td><code>EC_VOICE_ERROR_CALL_DOES_NOT_EXIST</code>  <br />  <br />- Call or Transaction does not exist.</td>\n</tr>\n<tr>\n<td>5484</td>\n<td>false</td>\n<td><code>EC_VOICE_ERROR_ADDRESS_INCOMPLETE</code>  <br />  <br />- Specified destination number is incomplete.</td>\n</tr>\n<tr>\n<td>5487</td>\n<td>false</td>\n<td><code>EC_VOICE_ERROR_REQUEST_TERMINATED</code>  <br />  <br />- Request has been terminated with a cancel button and end user refused to receive a voice call.</td>\n</tr>\n<tr>\n<td>5488</td>\n<td>false</td>\n<td><code>EC_VOICE_ERROR_NOT_ACCEPTABLE_HERE</code>  <br />  <br />- The format of the request is not acceptable on the operator’s end.</td>\n</tr>\n<tr>\n<td>5491</td>\n<td>false</td>\n<td><code>EC_VOICE_ERROR_REQUEST_PENDING</code>  <br />  <br />- Server has some pending request from the same dialog.</td>\n</tr>\n<tr>\n<td>5501</td>\n<td>true</td>\n<td><code>EC_VOICE_NOT_IMPLEMENTED</code>  <br />  <br />- The submitted request is not supported on the operator’s end.</td>\n</tr>\n<tr>\n<td>5503</td>\n<td>true</td>\n<td><code>EC_VOICE_SERVICE_UNAVAILABLE</code>  <br />  <br />- The service failed to complete the request.</td>\n</tr>\n</tbody>\n</table>\n</div>","_postman_id":"106c8a3b-efd4-42e3-88d7-ff6ccafd0b25"},{"name":"VOICE and WebRTC error codes","item":[],"id":"0b608a01-1db6-4b24-8388-708b90ce845d","description":"<p>OK (group id: 0)</p>\n<p>The request has been completed successfully.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>ID</th>\n<th>Permanent</th>\n<th>Error</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>10000</td>\n<td>true</td>\n<td><code>NORMAL_HANGUP</code> The call ended due to a hangup initiated by the caller, callee, or API.</td>\n</tr>\n<tr>\n<td>10001</td>\n<td>true</td>\n<td><code>ANSWERED_ELSEWHERE</code> The call was answered on another device or platform. Verify the call status on the intended device or investigate further if needed.</td>\n</tr>\n<tr>\n<td>10002</td>\n<td>true</td>\n<td><code>MACHINE_DETECTED</code> The voice call was answered by a machine or voicemail system. You may consider adjusting your communication strategy for machine-answered calls.</td>\n</tr>\n<tr>\n<td>10003</td>\n<td>true</td>\n<td><code>HUMAN_DETECTED</code> A human answered the call. You can take appropriate action based on the call's purpose.</td>\n</tr>\n<tr>\n<td>10004</td>\n<td>true</td>\n<td><code>MAX_DURATION_REACHED</code> The call reached the maximum allowed duration. If needed, initiate a new call or adjust the call duration settings and contact Support for further assistance.</td>\n</tr>\n</tbody>\n</table>\n</div><p>HANDSET_ERRORS (group id: 1)</p>\n<p>The request has not been completed due to handset-related issues.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>ID</th>\n<th>Permanent</th>\n<th>Error</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>10100</td>\n<td>true</td>\n<td><code>DEVICE_FORBIDDEN</code> The device (camera and/or microphone) used for the call is not allowed or blocked. Check device permissions or restrictions and take appropriate action.</td>\n</tr>\n<tr>\n<td>10101</td>\n<td>true</td>\n<td><code>DEVICE_NOT_FOUND</code> The device (camera and/or microphone) for the call could not be found or is unavailable. Ensure the device is accessible and try again.</td>\n</tr>\n<tr>\n<td>10102</td>\n<td>true</td>\n<td><code>DEVICE_UNAVAILABLE</code> The device (camera and/or microphone) for the call is currently unavailable.</td>\n</tr>\n<tr>\n<td>10103</td>\n<td>true</td>\n<td><code>MEDIA_ERROR</code> An error occurred with the media during the call (for example, an audio issue). Check the media settings and equipment, and troubleshoot as necessary.</td>\n</tr>\n</tbody>\n</table>\n</div><p>USER_ERRORS (group id: 2)</p>\n<p>User error occurred.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>ID</th>\n<th>Permanent</th>\n<th>Error</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>10200</td>\n<td>true</td>\n<td><code>NO_ANSWER</code> The call was successfully delivered to the end user device, however, it was not answered by the end user.</td>\n</tr>\n<tr>\n<td>10201</td>\n<td>true</td>\n<td><code>BUSY</code> The call has been successfully delivered to the end user's device, but the end user's device indicates that they are currently busy and unable to answer the incoming call.</td>\n</tr>\n<tr>\n<td>10202</td>\n<td>true</td>\n<td><code>CANCELED</code> The call was canceled at the origination end before it could be successfully routed to the end user.</td>\n</tr>\n<tr>\n<td>10203</td>\n<td>true</td>\n<td><code>REJECTED</code> The call was rejected/declined by the end user at the receiving end.</td>\n</tr>\n<tr>\n<td>10204</td>\n<td>true</td>\n<td><code>TEMPORARILY_UNAVAILABLE</code> The end user was unavailable to receive the call at the moment. The operator attempted to connect the call but encountered an issue with the end user's connection or availability, resulting in the call not being successfully connected. It is advisable to verify if the phone number provided is valid and reachable to ensure effective communication in the future.</td>\n</tr>\n</tbody>\n</table>\n</div><p>OPERATOR_ERRORS (group id: 3)</p>\n<p>The request has not been completed due to operator issues.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>ID</th>\n<th>Permanent</th>\n<th>Error</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>10300</td>\n<td>true</td>\n<td><code>FORBIDDEN</code> The received request was rejected. Contact Support for further assistance.</td>\n</tr>\n<tr>\n<td>10301</td>\n<td>true</td>\n<td><code>INSUFFICIENT_FUNDS</code> The account you are using does not have sufficient credits or funds available to initiate the phone call you are attempting to make. In order to proceed with the call, you will need to ensure that there are enough credits or funds in your account.</td>\n</tr>\n<tr>\n<td>10302</td>\n<td>true</td>\n<td><code>UNAUTHENTICATED</code> The caller's credentials or access rights are invalid or insufficient to initiate the call. To resolve this, ensure that the caller provides valid authentication credentials or obtains proper authorization for making the call.</td>\n</tr>\n<tr>\n<td>10303</td>\n<td>true</td>\n<td><code>DESTINATION_NOT_FOUND</code> The server was unable to locate the destination number you dialed. This could be due to an incorrect country prefix or an invalid number format. To resolve this issue, double-check the country prefix and ensure that the number you dialed is accurate and in the correct format.</td>\n</tr>\n<tr>\n<td>10304</td>\n<td>true</td>\n<td><code>DESTINATION_UNAVAILABLE</code> The destination number you attempted to call is currently unavailable to receive incoming calls. To address this situation, it is recommended to verify if the number you dialed is valid and reachable.</td>\n</tr>\n<tr>\n<td>10305</td>\n<td>true</td>\n<td><code>INVALID_DESTINATION</code> The server was unable to locate the destination number you dialed. This could be due to an incorrect country prefix or an invalid number format. To resolve this issue, double-check the country prefix and ensure that the number you dialed is accurate and in the correct format.</td>\n</tr>\n<tr>\n<td>10306</td>\n<td>true</td>\n<td><code>INVALID_REQUEST</code> The call request is invalid or malformed. Review the request parameters and structure, and make necessary adjustments.</td>\n</tr>\n<tr>\n<td>10307</td>\n<td>true</td>\n<td><code>REQUEST_TIMEOUT</code> The call request timed out without a response. For more specific details and assistance, contact the Support team, who can provide further information and guidance.</td>\n</tr>\n<tr>\n<td>10308</td>\n<td>true</td>\n<td><code>NETWORK_ERROR</code> An error occurred in the network during the call. Check the network connection and contact Support for further investigation.</td>\n</tr>\n<tr>\n<td>10309</td>\n<td>true</td>\n<td><code>SERVICE_UNAVAILABLE</code> The call service is temporarily unavailable. Contact Support for assistance.</td>\n</tr>\n<tr>\n<td>10310</td>\n<td>true</td>\n<td><code>UNKNOWN</code> An unknown error occurred during the call. Contact Support for further investigation and assistance.</td>\n</tr>\n<tr>\n<td>10311</td>\n<td>true</td>\n<td><code>FEATURE_UNAVAILABLE</code> The requested call feature is not available or supported. Consider alternative features or methods for communication or contact Support for assistance.</td>\n</tr>\n<tr>\n<td>10312</td>\n<td>true</td>\n<td><code>CONGESTION</code> The call could not be completed due to network congestion or overload. Contact Support for further investigation and assistance.</td>\n</tr>\n<tr>\n<td>10400</td>\n<td>true</td>\n<td><code>URL_NOT_FOUND</code> The requested URL for the call was not found. Verify the URL and make necessary corrections.</td>\n</tr>\n<tr>\n<td>10401</td>\n<td>true</td>\n<td><code>URL_UNREACHABLE</code> The requested URL for the call is unreachable. Check the network connectivity and URL accessibility.</td>\n</tr>\n<tr>\n<td>10402</td>\n<td>true</td>\n<td><code>INVALID_RESPONSE</code> The response received during the call is invalid or unexpected. Contact Support for assistance.</td>\n</tr>\n</tbody>\n</table>\n</div><p>HANDSET_ERRORS (group id: 1) - WebRTC error codes</p>\n<p>The request has not been completed due to handset-related issues.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>ID</th>\n<th>Permanent</th>\n<th>Error</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>5720</td>\n<td>true</td>\n<td><code>EC_NO_PEER_CONNECTION</code> The peer connection has not been established.</td>\n</tr>\n<tr>\n<td>5721</td>\n<td>true</td>\n<td><code>EC_INVALID_DTMF_CONFIG_NO_AUDIO_TRACK</code> Invalid DTMF configuration (no audio track).</td>\n</tr>\n<tr>\n<td>5722</td>\n<td>true</td>\n<td><code>EC_DTMF_UNAVAILABLE</code> DTMF options are not available.</td>\n</tr>\n<tr>\n<td>5723</td>\n<td>true</td>\n<td><code>EC_DTMF_INVALID_TONE</code> Invalid DTMF tone sent. Allowed tones are digits 1-9, * and #.</td>\n</tr>\n<tr>\n<td>5724</td>\n<td>true</td>\n<td><code>EC_NO_LOCAL_STREAM</code> Local stream was not initialized.</td>\n</tr>\n<tr>\n<td>5725</td>\n<td>true</td>\n<td><code>EC_NO_AUDIO_TRACK</code> The audio track is missing.</td>\n</tr>\n<tr>\n<td>5726</td>\n<td>true</td>\n<td><code>EC_NO_VIDEO_TRACK</code> The video track is missing.</td>\n</tr>\n<tr>\n<td>5727</td>\n<td>true</td>\n<td><code>EC_NO_DISPLAY_MEDIA</code> Display media API is not available.</td>\n</tr>\n<tr>\n<td>5728</td>\n<td>true</td>\n<td><code>EC_UNKNOWN_SCREEN_SHARE_ERROR</code> Unknown screen share error.</td>\n</tr>\n</tbody>\n</table>\n</div><p>USER_ERRORS (group id: 2) - WebRTC error codes</p>\n<p>User error occurred.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>ID</th>\n<th>Permanent</th>\n<th>Error</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>5800</td>\n<td>true</td>\n<td><code>EC_NO_ANSWER</code> The end user received the call but did not answer it.</td>\n</tr>\n<tr>\n<td>5801</td>\n<td>true</td>\n<td><code>EC_USER_BUSY</code> The end user is currently busy and not able to receive the call.</td>\n</tr>\n<tr>\n<td>5802</td>\n<td>true</td>\n<td><code>EC_PERMISSION_DENIED</code> Permission to use a camera and/or microphone was denied.</td>\n</tr>\n<tr>\n<td>5803</td>\n<td>true</td>\n<td><code>EC_DEVICE_NOT_FOUND</code> Device does not have a camera and/or microphone connected/enabled.</td>\n</tr>\n<tr>\n<td>5804</td>\n<td>true</td>\n<td><code>EC_DEVICE_NOT_AVAILABLE</code> Camera or microphone is already in use.</td>\n</tr>\n<tr>\n<td>5805</td>\n<td>true</td>\n<td><code>EC_ACTIVE_CALL_ON_INCOMING_CAL</code> The end user received an incoming call while they were on another active call.</td>\n</tr>\n<tr>\n<td>5806</td>\n<td>true</td>\n<td><code>EC_CALL_TERMINATED</code> Call terminated.</td>\n</tr>\n<tr>\n<td>5850</td>\n<td>true</td>\n<td><code>EC_USER_ALREADY_JOINED</code> The end user is already joined on another device.</td>\n</tr>\n<tr>\n<td>5851</td>\n<td>true</td>\n<td><code>EC_MAX_USERS_LIMIT_REACHED</code> The maximum number of users was already reached.</td>\n</tr>\n<tr>\n<td>5852</td>\n<td>true</td>\n<td><code>EC_VIDEO_PUBLISHERS_LIMIT_REACHED</code> The maximum number of users that are publishing a video was already reached.</td>\n</tr>\n</tbody>\n</table>\n</div><p>OPERATOR_ERRORS (group id: 3) - WebRTC error codes</p>\n<p>The request has not been completed due to operator issues.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>ID</th>\n<th>Permanent</th>\n<th>Error</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>5768</td>\n<td>true</td>\n<td><code>EC_CLIENT_URL_READ_FAILURE</code> Could not read the client's URL.</td>\n</tr>\n<tr>\n<td>5769</td>\n<td>true</td>\n<td><code>EC_CLIENT_URL_REACH_FAILURE</code> Could not reach the client's URL.</td>\n</tr>\n<tr>\n<td>5900</td>\n<td>true</td>\n<td><code>EC_FORBIDDEN</code> The received request was rejected.</td>\n</tr>\n<tr>\n<td>5901</td>\n<td>true</td>\n<td><code>EC_REQUEST_TIMEOUT</code> There was no coverage for a specific destination number, or the end user could not be reached in time for the call.</td>\n</tr>\n<tr>\n<td>5902</td>\n<td>true</td>\n<td><code>EC_INTERNAL_SERVER_ERROR</code> The server could not process the request because of an unexpected error.</td>\n</tr>\n<tr>\n<td>5903</td>\n<td>true</td>\n<td><code>EC_DESTINATION_NOT_FOUND</code> The server has definitive information that the end user does not exist within the domain specified in the Request-URI.</td>\n</tr>\n<tr>\n<td>5904</td>\n<td>true</td>\n<td><code>EC_SERVICE_TEMPORARY_UNAVAILABLE</code> The service is temporarily unavailable.</td>\n</tr>\n<tr>\n<td>5905</td>\n<td>true</td>\n<td><code>EC_REQUEST_PENDING</code> The server has a pending request from the same dialog.</td>\n</tr>\n<tr>\n<td>5906</td>\n<td>true</td>\n<td><code>EC_ADDRESS_INCOMPLETE</code> The specified destination number is incomplete.</td>\n</tr>\n<tr>\n<td>5907</td>\n<td>true</td>\n<td><code>EC_TEMPORARILY_NOT_AVAILABLE</code> The destination address is currently unavailable.</td>\n</tr>\n<tr>\n<td>5990</td>\n<td>true</td>\n<td><code>EC_CONNECTION_ERROR</code> There has been a connection error.</td>\n</tr>\n<tr>\n<td>5991</td>\n<td>true</td>\n<td><code>EC_UNKNOWN_WEBRTC_ERROR</code> There has been an unknown WebRTC error.</td>\n</tr>\n</tbody>\n</table>\n</div>","_postman_id":"0b608a01-1db6-4b24-8388-708b90ce845d"},{"name":"EMAIL error codes","item":[],"id":"2d6825bf-235d-4335-a330-3b04fbaa0adf","description":"<p>Dropped (group id: 1)</p>\n<p>The request has not been completed successfully as there was an issue noticed before the sending attempt causing an error.<br />The</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>ID</strong></th>\n<th><strong>Permanent</strong></th>\n<th><strong>Name</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>6003</td>\n<td>true</td>\n<td><code>EC_UNSUBSCRIBED_EMAIL_ADDRESS</code>  <br />The recipient opted out of receiving updates from this specific address. If removal is desired, complete the request by going to Do not contact in the web interface.</td>\n</tr>\n<tr>\n<td>6034</td>\n<td>true</td>\n<td><code>EC_SUPPRESSED_BOUNCE</code>  <br />A bounce SMTP response from the recipient's mailbox provider earlier has resulted in the recipient address being suppressed.</td>\n</tr>\n<tr>\n<td>6035</td>\n<td>true</td>\n<td><code>EC_SUPPRESSED_SPAM_COMPLAINT</code>  <br />Due to the recipient reporting previous content sent from the same domain as spam, the recipient's address has been suppressed.  <br />* <em>Note that this error code will be deployed at a later stage. For the time being, spam complaints will be marked with EC 6034</em>.</td>\n</tr>\n<tr>\n<td>6033</td>\n<td>true</td>\n<td><code>EC_INVALID_CC_BCC_EMAIL_ADDRESS</code>  <br />The request contains invalid addresses in the CC and/or BCC. Ensure that the addresses are correctly formatted by checking them.</td>\n</tr>\n<tr>\n<td>6023</td>\n<td>true</td>\n<td><code>EC_BLOCKED_SUSPICIOUS_ACTIVITY</code>  <br />Your domain has been blocked by VHD due to suspicious activity. Should you require any additional information regarding this matter, contact Support or your account manager.</td>\n</tr>\n<tr>\n<td>6036</td>\n<td>true</td>\n<td><code>EC_SENDING_DOMAIN_UNVERIFIED</code>  <br />Domain does not currently have all required DNS records set up correctly. Check your DNS configuration.</td>\n</tr>\n<tr>\n<td>6016</td>\n<td>true</td>\n<td><code>EC_SENDER_DOMAIN_BOUNCE_BLOCKED</code>  <br />Your domain has been blocked due to a high bounce rate to protect IPs and its reputation. The domain unblocking procedure is automated and will happen after a 24-hour cooling-off period. To prevent this from occurring in the future, check the reports and clean up your recipient database from inactive addresses. Use the Email validation service to help you with the procedure.</td>\n</tr>\n<tr>\n<td>6029</td>\n<td>true</td>\n<td><code>EC_SENDER_ADDRESS_INVALID</code>  <br />The email sender is invalid or unauthorized to send emails. To resolve the issue, check the sender domain for spelling mistakes and ensure that the domain is verified and properly configured.</td>\n</tr>\n<tr>\n<td>6018</td>\n<td>true</td>\n<td><code>EC_REQUEST_INVALID</code>  <br />The submitted request is not valid. Ensure that the data and request parameters are accurate and in the right format.</td>\n</tr>\n<tr>\n<td>6002</td>\n<td>true</td>\n<td><code>EC_SPAM_DETECTED</code>  <br />The content you are trying to send was detected as possible spam by VHD. Review the Deliverability recommendations and adjust your content accordingly before retry.</td>\n</tr>\n<tr>\n<td>6038</td>\n<td>true</td>\n<td><code>EC_EMAIL_CONTENT_EXPIRED</code>  <br />The content in a Template expired due to the lack of regular usage. To help the situation, check the content and re-upload it to help the situation. If the issue persists, contact Support.</td>\n</tr>\n<tr>\n<td>6021</td>\n<td>true</td>\n<td><code>EC_EMAIL_PLACEHOLDERS_ERROR</code>  <br />Error with Placeholders in the Content. Check the placeholders and confirm that there are no issues or typos in them and retry.</td>\n</tr>\n<tr>\n<td>6039</td>\n<td>true</td>\n<td><code>EC_EMAIL_TEMPLATE_LANGUAGE_ERROR</code>  <br />Error in Template Language in your Content. See Template language personalization or more details. If the problem persists, contact Support.</td>\n</tr>\n<tr>\n<td>6024</td>\n<td>true</td>\n<td><code>EC_EMAIL_TOO_MANY_URLS</code>  <br />Maximum amount of URLs with Tracking enabled is 150. Lower the amount of URLs or turn off the Tracking features before retry.</td>\n</tr>\n<tr>\n<td>6025</td>\n<td>true</td>\n<td><code>EC_EMAIL_INVALID_TRACKING_PARAMS</code>  <br />Tracking parameters in the email are invalid. Review and help these before the retry.</td>\n</tr>\n<tr>\n<td>6026</td>\n<td>true</td>\n<td><code>EC_EMAIL_LANDING_PAGE_PLACEHOLDERS_SIZE_EXCEEDED</code>  <br />Size of the Placeholders on the landing page limit is 256 characters. Adjust (decrease) the landing page placeholder size accordingly and retry.</td>\n</tr>\n<tr>\n<td>6027</td>\n<td>true</td>\n<td><code>EC_EMAIL_INVALID_HEADERS</code>  <br />The headers of the email are invalid or improperly formatted. Check the headers and ensure they meet the required format.</td>\n</tr>\n<tr>\n<td>6030</td>\n<td>true</td>\n<td><code>EC_EMAIL_INVALID_LANDING_PAGE</code>  <br />The specified landing page is invalid or inaccessible. Confirm the landing page's URL and availability and retry.</td>\n</tr>\n<tr>\n<td>6031</td>\n<td>true</td>\n<td><code>EC_INVALID_PRESERVED_CC_OR_BCC_RECIPIENT</code>  <br />Invalid preserved recipient in CC or BCC. Check the recipient list and ensure that all preserved recipients are valid and the limit is not reached.</td>\n</tr>\n<tr>\n<td>6020</td>\n<td>true</td>\n<td><code>EC_EMAIL_TEMPLATE_NOT_FOUND</code>  <br />The Email Template from the request could not be found. Make sure that the Template ID is correct before retry.</td>\n</tr>\n<tr>\n<td>6040</td>\n<td>true</td>\n<td><code>EC_EMAIL_TEMPLATE_EXPIRED</code>  <br />The Template validity period expired. Either update a Template to prolong the validity, or copy it and update the Template ID before retry.</td>\n</tr>\n<tr>\n<td>6041</td>\n<td>true</td>\n<td><code>EC_EMAIL_TEMPLATE_NOT_SAVED</code>  <br />The Template was not saved. Make sure the requested Template is correctly stored on the VHD web interface before retry.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Bounced (group id: 2)</p>\n<p>The response from the mailbox provider indicates that there was an error and the delivery attempt was unsuccessful.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>ID</strong></th>\n<th><strong>Permanent</strong></th>\n<th><strong>Name</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>6010</td>\n<td>false</td>\n<td><code>EC_RECIPIENT_INBOX_FULL</code>  <br />The recipient's mailbox storage limit has been reached and they cannot receive additional emails. Contact the recipient and resolve this situation by clearing some data.</td>\n</tr>\n<tr>\n<td>6007</td>\n<td>false</td>\n<td><code>EC_MAILBOX_TEMPORARY_UNAVAILABLE</code>  <br />The recipient's mailbox is temporarily unavailable. Retry the email in a few hours and contact Support if you continue to encounter the same response for the additional checks.</td>\n</tr>\n<tr>\n<td>6017</td>\n<td>false</td>\n<td><code>EC_SENDER_IP_BLACKLISTED</code>  <br />The IP address assigned to your domain has been blacklisted. Review using the Deliverability recommendations and request the delisting on the relevant blacklist.</td>\n</tr>\n<tr>\n<td>6046</td>\n<td>false</td>\n<td><code>EC_UNSOLICITED_RECIPIENT</code>  <br />The recipient mailbox provider (domain) has detected that this message is likely to be an unsolicited email, therefore, it was blocked. Ensure that your recipients are subscribed and interested in the traffic before retry.</td>\n</tr>\n<tr>\n<td>6011</td>\n<td>false</td>\n<td><code>EC_SOFT_BOUNCE</code>  <br />Response indicates a temporary delivery error. Retry sending and if the same response is returned, contact the recipient to attend to the situation.</td>\n</tr>\n<tr>\n<td>6006</td>\n<td>true</td>\n<td><code>EC_INVALID_EMAIL_ADDRESS</code>  <br />The recipient's email address provided is either invalid, inactive, or disabled. Check for possible typos and validate the address before the retry. Use the Email validation service to help you with the procedure.</td>\n</tr>\n<tr>\n<td>6009</td>\n<td>true</td>\n<td><code>EC_MAILBOX_PERMANENTLY_UNAVAILABLE</code>  <br />The recipient's mailbox provider (domain) might be permanently unavailable. Contact the recipient and attend to the situation before retry.</td>\n</tr>\n<tr>\n<td>6037</td>\n<td>true</td>\n<td><code>EC_RECIPIENT_DOMAIN_MX_NOT_FOUND</code>  <br />The domain to which this address belongs is possibly unavailable or does not exist due to the MX not being found or being unavailable. Check the address for any typos and validate the address.</td>\n</tr>\n<tr>\n<td>6042</td>\n<td>true</td>\n<td><code>EC_SPAM_REVERTED</code>  <br />The content in the email was flagged as spam by the mailbox provider. Review the Deliverability recommendations and adjust your content accordingly before retry.</td>\n</tr>\n<tr>\n<td>6043</td>\n<td>true</td>\n<td><code>EC_SUSPICIOUS_CONTENT</code>  <br />Mailbox provider decided to deny your traffic due to the suspicious content. Ensure that you are following content best practices before retrying the traffic. If the error persists, contact the mailbox provider.</td>\n</tr>\n<tr>\n<td>6044</td>\n<td>true</td>\n<td><code>EC_SUSPICIOUS_SENDER</code>  <br />Recipient mailbox provider denied your messages due to very low reputation of your domain or IPs. This usually happens due to different sending best practices not being followed. Ensure that you respect general and mailbox provider's best practices when sending traffic and if the error repeats, contact the mailbox provider to resolve the situation.</td>\n</tr>\n<tr>\n<td>6045</td>\n<td>true</td>\n<td><code>EC_RECIPIENT_DOMAIN_POLICY_ERROR</code>  <br />Mailbox provider blocked your message as it does not meet their email policy requirements for your organization or for the recipient's organization. Follow the best practices and if the error repeats, contact the recipient for additional details and possible solution.</td>\n</tr>\n<tr>\n<td>6047</td>\n<td>true</td>\n<td><code>EC_DOMAIN_CONFIGURATION_ERROR</code>  <br />Your domain might be missing valid DKIM or SPF, so your traffic has been denied by the recipient mailbox provider. Ensure that your DNS records are valid before retry.</td>\n</tr>\n<tr>\n<td>6048</td>\n<td>true</td>\n<td><code>EC_DMARC_POLICY_ISSUE</code>  <br />Recipient mailbox provider denied your domain's DMARC policy. Ensure that the policy is valid before retry and if the error repeats, contact the recipient mailbox provider for the further instructions.</td>\n</tr>\n<tr>\n<td>6049</td>\n<td>true</td>\n<td><code>EC_SENDER_DOMAIN_BLACKLISTED</code>  <br />Your domain has been blockisted by the recipient mailbox. Review the Deliverability recommendations and request the delisting on the relevant blocklist.</td>\n</tr>\n<tr>\n<td>6012</td>\n<td>true</td>\n<td><code>EC_HARD_BOUNCE</code>  <br />Response is indicating a permanent error related to the delivery. Contact the recipient to confirm and solve the situation.</td>\n</tr>\n</tbody>\n</table>\n</div><p>System Error (group id: 3)</p>\n<p>The request has not been successful due to the issue on the VHD end.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>ID</strong></th>\n<th><strong>Permanent</strong></th>\n<th><strong>Name</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>6013</td>\n<td>false</td>\n<td><code>EC_INTERNAL_SYSTEM_ERROR</code>  <br />Something went wrong on the VHD end. Retry the traffic and contact Support if the same error is returned.</td>\n</tr>\n</tbody>\n</table>\n</div>","_postman_id":"2d6825bf-235d-4335-a330-3b04fbaa0adf"}],"id":"4fa7b951-2c08-4e1a-849f-d0d3e4789c76","description":"<p>When using our API, you may encounter certain <strong>status</strong> and <strong>error</strong> codes that you need to understand or troubleshoot. This page contains a list of all codes with thorough descriptions and action steps you need to take if you are looking to resolve a problem.</p>\n<p>Code lists:</p>\n<ul>\n<li><p><a href=\"https://dev.vhdmedia.se/#76c2475f-4276-49c3-9761-20c2804d9d77\">HTTP status codes</a></p>\n</li>\n<li><p><a href=\"https://dev.vhdmedia.se/#4a44e247-b4b5-4c7e-a5b9-1e162ad42f1e\">API Status codes</a></p>\n</li>\n<li><p><a href=\"https://dev.vhdmedia.se/#3d436a03-85b8-4fd5-8208-0106cb7dcca0\">General status codes</a></p>\n</li>\n<li><p><a href=\"https://dev.vhdmedia.se/#7dd6ad58-ef4a-453a-be9b-95a03d42cb0d\">Voice status codes</a></p>\n</li>\n<li><p><a href=\"https://dev.vhdmedia.se/#1407ccc3-711f-4365-a838-37b0c4ff6464\">Email status codes</a></p>\n</li>\n<li><p><a href=\"https://dev.vhdmedia.se/#1cc7b1b9-3e5e-4f2c-b6fa-529f69a6066d\">Error codes</a></p>\n</li>\n<li><p><a href=\"https://dev.vhdmedia.se/#8b6ff3f5-ec85-4442-b7cd-ba5d8c315fbf\">General error codes</a></p>\n</li>\n<li><p><a href=\"https://dev.vhdmedia.se/#2673c275-9533-4554-b4c9-b5abfb5637ea\">Voice error codes</a></p>\n</li>\n<li><p><a href=\"https://dev.vhdmedia.se/#f62dd84e-99a1-4d47-82ee-08cc675cc1d6\">Email error codes</a></p>\n</li>\n</ul>\n","_postman_id":"4fa7b951-2c08-4e1a-849f-d0d3e4789c76"}],"event":[{"listen":"prerequest","script":{"type":"text/javascript","exec":["// Documentation examples use sample recipients: the number 46731234567 for SMS, and","// jane.smith@vhdmedia.se / tom.smith@vhdmedia.se for email. When you run a send request they are","// replaced with your own test recipient (environment variables \"testNumber\" and \"testEmail\"). Voice call requests use testNumber too.","// If the variable is empty, the request is not sent.","var path = pm.request.url.getPath();","var isVoice = /^\\/(tts\\/3\\/(single|multi|advanced)|voice\\/ivr\\/1\\/messages)$/.test(path);","var isSms = /^\\/sms\\/(3\\/(messages|text\\/query)|2\\/(text|binary)\\/|1\\/text\\/query)/.test(path) || isVoice;","var isEmail = /^\\/email\\/(4\\/(messages|mime)|3\\/send)/.test(path);","","if (isSms || isEmail) {","    var variable = isSms ? \"testNumber\" : \"testEmail\";","    var target = (pm.environment.get(variable) || \"\").trim();","    if (isVoice) {","        // voice calls use testVoiceNumber when it is set, otherwise testNumber","        variable = (pm.environment.get(\"testVoiceNumber\") || \"\").trim() ? \"testVoiceNumber\" : \"testNumber\";","        target = (pm.environment.get(variable) || \"\").trim();","    }","    var samples = isSms ? [\"46731234567\"] : [\"jane.smith@vhdmedia.se\", \"tom.smith@vhdmedia.se\"];","","    if (!target) {","        console.warn(variable + \" is not set in the environment - request not sent.\");","        if (pm.execution && pm.execution.skipRequest) {","            pm.execution.skipRequest();","        } else {","            pm.request.url.update(\"http://localhost:1/\" + variable + \"-not-set\");","        }","    } else {","        var swap = function (text) {","            samples.forEach(function (s) { text = text.split(s).join(target); });","            return text;","        };","        var body = pm.request.body;","        if (body && body.raw) {","            body.update({ mode: \"raw\", raw: swap(body.raw), options: body.options });","        }","        if (body && body.formdata) {","            body.formdata.each(function (p) { if (p.value) { p.value = swap(p.value); } });","        }","        pm.request.url.query.each(function (q) { if (q.value) { q.value = swap(q.value); } });","    }","}","","// Keep the \"sendAt\" variable between 1 and 4 days from now, so it is valid for every channel:","// if it is empty, less than a day away, or more than 4 days away, set it to 3 days from now (UTC).","// (Email v4 accepts at most 5 days ahead; SMS up to 180 days; email v3 up to 30 days.)","(function () {","    var current = pm.environment.get(\"sendAt\");","    var t = current ? Date.parse(String(current).replace(/\\+0000$/, \"Z\")) : NaN;","    if (isNaN(t) || t < Date.now() + 86400000 || t > Date.now() + 4 * 86400000) {","        var d = new Date(Date.now() + 3 * 86400000);","        var p = function (n) { return (\"0\" + n).slice(-2); };","        pm.environment.set(\"sendAt\", d.getUTCFullYear() + \"-\" + p(d.getUTCMonth() + 1) + \"-\" + p(d.getUTCDate()) + \"T\" + p(d.getUTCHours()) + \":\" + p(d.getUTCMinutes()) + \":\" + p(d.getUTCSeconds()) + \".000+0000\");","    }","})();",""]}},{"listen":"test","script":{"type":"text/javascript","exec":[""]}}],"variable":[{"key":"to","value":""},{"key":"text","value":""},{"key":"from","value":""},{"key":"lisName","value":"listName"}]}