{"info":{"_postman_id":"d37c9f8e-8ed8-41be-ad16-49be627aa150","name":"Vertical Connect API","description":"<html><head></head><body><p>This documentation will describe the verious endpoints available to interact with your partnership agreement via the Vertical Connect API.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"47421989","collectionId":"d37c9f8e-8ed8-41be-ad16-49be627aa150","publishedId":"2sB3WvKx4A","public":true,"customColor":{"top-bar":"1c1c3b","right-sidebar":"1c1c3b","highlight":"6b38e5"},"publishDate":"2025-11-12T14:38:29.000Z"},"item":[{"name":"Auth","item":[],"id":"4389a1c8-074e-4221-b513-6968397a0525","description":"<p>The Vertical Connect API is a RESTful API which requires an API key and an API secret, issued by Vertical, to access.</p>\n<h2 id=\"get-requests\">GET requests</h2>\n<p>GET requests contain no body payload and so only require the API key to be passed in the API-KEY header</p>\n<h2 id=\"post-put-and-patch-requests\">POST, PUT and PATCH requests</h2>\n<p>Requests which send a payload in the body require, in addition to the API key passed in the headers, an HMAC hash of the body payload to be sent in another header, API-HASH, using the issued API secret.</p>\n<p>Example in PHP, where <code>$payload</code> is your JSON body:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-php\">    $hash = hash_hmac(\"sha512\", $payload, $secret);\n    curl_setopt($ch, CURLOPT_HTTPHEADER, array(\n        \"API-KEY: {$key}\",\n        \"API-HASH: {$hash}\"\n    ));\n\n</code></pre>\n<h2 id=\"variables\">Variables</h2>\n<p>To use this postman collections the below environmental variables should be set:</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>Type</strong></th>\n<th><strong>Test Value</strong></th>\n<th><strong>Live Value</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>base_url</td>\n<td>default</td>\n<td><a href=\"https://api.test.durham.cloud/wholesale\">https://api.test.durham.cloud/wholesale</a></td>\n<td><a href=\"https://api.durham.cloud/wholesale\">https://api.durham.cloud/wholesale</a></td>\n</tr>\n<tr>\n<td>API_key</td>\n<td>secret</td>\n<td>to be provided by TSEG</td>\n<td>to be provided by TSEG</td>\n</tr>\n<tr>\n<td>secret</td>\n<td>secret</td>\n<td>to be provided by TSEG</td>\n<td>to be provided by TSEG</td>\n</tr>\n</tbody>\n</table>\n</div><p>All values in single {} should be replaced with the appropriate value.</p>\n","_postman_id":"4389a1c8-074e-4221-b513-6968397a0525"},{"name":"Quote","item":[{"name":"Get Quote UUID","id":"ec27750c-4401-4d5a-a153-57d791169790","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"API-KEY","value":"{{API-KEY}}","type":"text"}],"url":"{{base_url}}/quote/{quote_uuid}","description":"<p>Retrieve a quote that has been previously created.</p>\n<p><strong>Path Parameters:</strong></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>Type</strong></th>\n<th><strong>Desc</strong></th>\n<th><strong>Required</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>quote_uuid</td>\n<td>string</td>\n<td>The unique reference for the quote.</td>\n<td>Y</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["quote","{quote_uuid}"],"host":["{{base_url}}"],"query":[],"variable":[]}},"response":[{"id":"11f71e05-bc74-41e3-952c-70f20ca8d05a","name":"200 OK","originalRequest":{"method":"GET","header":[{"key":"API-KEY","value":"{{API-KEY}}","type":"text"}],"url":"{{base_url}}/quote/{quote_uuid}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 21 Aug 2025 09:38:33 GMT"},{"key":"Content-Type","value":"application/json","description":"","type":"text"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"nginx"},{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Accept-Encoding"},{"key":"Cache-Control","value":"private, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"-1"},{"key":"X-RateLimit-Limit","value":"1000"},{"key":"X-RateLimit-Remaining","value":"999"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":" {\n    \"uuid\":\t\"<string>\",\n    //The UUID to use for future requests related to this quote.\n\n    \"address\":\t\"<string>\",\n    //Address lines including Town and Postcode\n\n    \"capacity\":\t\"integer\",\n    //The number of people that will be living at the property.\n\n    \"start_date\": \"<string>\",\n    //The date the quote will be started from in YYYY-MM-DD format.\n\n    \"end_date\":\t\"<string>\",\n    //The end date for the quote.\n\n    \"unlimited\": \"boolean\",\n    //True if the quote is using the unlimited tariff. Otherwise, false.\n\n    \"contract_reference\": \"<string>\",\n    //The reference to the generated contract once the quote has been completed.\n\n    \"quote_link\": \"<string>\",\n    //The unique link for unidentified tenants to be able to signup to.\n\n    \"services\": {\n    //The services attached to the quote. Each service can be null if it has not been requested or is unavailable. There is the possibility of a new property being added if a new service is offered.\n\n        \"electricity\":  {\n        //Price structure for an energy service quote. Service will only be displayed if selected on request.\n\n            \"monthly_price\": \"<number>\",\n            \"tenant_week\": \"<number>\",\n            \"tenant_month\":\t\"<number>\",\n            \"unit_rate\": \"<number>\",\n            \"standing_charge\": \"<number>\"\n        },\n    \n        \"gas\": {\n        //Price structure for an energy service quote. Service will only be displayed if selected on request.\n\n            \"monthly_price\": \"<number>\",\n            \"tenant_week\": \"<number>\",\n            \"tenant_month\":\t\"<number>\",\n            \"unit_rate\": \"<number>\",\n            \"standing_charge\": \"<number>\"\n        },\n    \n        \"water\": {\n        //Price structure for a service on a quote. Service will only be displayed if selected on request.\n\n            \"monthly_price\": \"<number>\",\n            \"tenant_week\": \"<number>\",\n            \"tenant_month\":\t\"<number>\"\n        },\n    \n        \"broadband\": {\n        //Broadband quotes for available package. Service will only be displayed if selected on request.\n\n            \"monthly_price\": \"<number>\",\n            \"tenant_week\": \"<number>\",\n            \"tenant_month\":\t\"<number>\",\n            \"provider\":\t\"<string>\",\n            \"package_name\": \"<string>\",\n            \"package_code\": \"<string>\",\n            \"min_speed\": \"<number>\",\n            \"max_speed\": \"<number>\",\n            \"estimated_speed\": \"<number>\"\n        },\n    \n        \"tvl\":  {\n        //Price structure for a service on a quote. Service will only be displayed if selected on request.\n\n            \"monthly_price\": \"<number>\",\n            \"tenant_week\": \"<number>\",\n            \"tenant_month\":\t\"<number>\"\n        }\n    },\n    \n    \"tenants\":  [\n    //The list of tenant details attached to the quote.\n        \n        {\n        //An object containing an individual tenants details.\n\n            \"uuid\":\t\"<string>\",\n            //The unique identifier for the tenant.\n\n            \"name\":\t\"<string>\",\n            //The tenants full name.\n\n            \"email\": \"<string>\",\n            //The tenants e-mail address.\n\n            \"mobile\": \"<string>\",\n            //The tenants mobile number.\n\n            \"tenant_resume_link\": \"<string>\",\n            //The unique link for this tenant to signup to the terms and conditions.\n\n            \"completed\": \"boolean\"\n            //True if we have the full customers details and they have signed up to the terms and conditions. Otherwise, false.\n        }\n    ]\n }"},{"id":"aaa1d694-8540-4729-af46-60ef389f89d7","name":"400 Invalid Request","originalRequest":{"method":"GET","header":[{"key":"API-KEY","value":"{{API-KEY}}","type":"text"}],"url":"{{base_url}}/quote/{quote_uuid}"},"status":"Invalid Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 21 Aug 2025 09:37:26 GMT"},{"key":"Content-Type","value":"application/json","description":"","type":"text"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"nginx"},{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Accept-Encoding"},{"key":"Cache-Control","value":"private, must-revalidate"},{"key":"X-RateLimit-Limit","value":"1000"},{"key":"X-RateLimit-Remaining","value":"999"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"-1"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"error\": \"<string>\"\n    //Simple error message.\n}"},{"id":"42ce86c8-cecb-48f3-9997-b48c318207a2","name":"404 Not Found","originalRequest":{"method":"GET","header":[{"key":"API-KEY","value":"{{API-KEY}}","type":"text"}],"url":"{{base_url}}/quote/{quote_uuid}"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 21 Aug 2025 09:37:26 GMT"},{"key":"Content-Type","value":"application/json","description":"","type":"text"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"nginx"},{"key":"Vary","value":"Accept-Encoding"},{"key":"Vary","value":"Accept-Encoding"},{"key":"Cache-Control","value":"private, must-revalidate"},{"key":"X-RateLimit-Limit","value":"1000"},{"key":"X-RateLimit-Remaining","value":"999"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"-1"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"error\": \"<string>\"\n    //Simple error message.\n}"}],"_postman_id":"ec27750c-4401-4d5a-a153-57d791169790"},{"name":"Create a Quote","event":[{"listen":"prerequest","script":{"id":"1626188c-3586-475e-8d8e-b48926faa455","exec":["// get secret","var secret = pm.environment.get(\"secret\");","// get request body","var req = request.data","var requestBody = pm.variables.replaceIn(pm.request.body.raw);","","// create HMAC SHA512 hash request body and secret","var hashHmacSHA512 = CryptoJS.enc.Hex.stringify(CryptoJS.HmacSHA512(requestBody, secret));","// add headers to request","//pm.request.headers.add({key: \"API-HASH\", value: hashHmacSHA512});","pm.environment.set(\"API-HASH\", hashHmacSHA512);",""],"type":"text/javascript","packages":{}}}],"id":"0cb786c0-bd72-430b-919f-db929d4651f7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"API-KEY","value":"{{API-KEY}}","type":"text"},{"key":"API-HASH","value":"{{API-HASH}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"address\": \"string\", //The properties address lines, excluding the town and postcode.\n\n    \"town\": \"string\", //The town of the property.\n\n    \"postcode\": \"string\", //The properties postcode. The format must include a space between the outward and inward code.\n\n    \"capacity\": \"integer\", //The number of people that will be living at the property.\n\n    \"start_date\": \"string\", //The date the contract will be started from in YYYY-MM-DD format.\n\n    \"end_date\": \"string\", //The end date for the contract. Date must be at least 10 months ahead of start_date and in YYYY-MM-DD format.\n\n    \"udprn\": \"string\", //The unique delivery point reference number. (Min Len: 8 , Max Len 8)\n\n    \"uprn\": \"string\", //The unique property reference number. (Min Len: 1 , Max Len 12)\n\n    \"unlimited\": \"boolean\", //True if the quote should use the Unlimited tariff options. Otherwise, false.\n\n    \"electricity\": \"boolean\", //Quotes must have electricity. Therefore, this should be true.\n\n    \"gas\": \"boolean\", //True if the quote should have gas. Otherwise, false.\n\n    \"water\": \"boolean\", //True if the quote should have water. Otherwise, false.\n\n    \"broadband\": \"boolean\", //True if the quote should have broadband. Otherwise, false.\n\n    \"tvl\": \"boolean\" //True if the quote should have TV licence. Otherwise, false.\n}","options":{"raw":{"language":"json"}}},"url":"{{base_url}}/quote","description":"<p>Create a new quote for a particular address with selected services and contractual dates.</p>\n","urlObject":{"path":["quote"],"host":["{{base_url}}"],"query":[],"variable":[]}},"response":[{"id":"6fea6ee4-836f-4fce-8de3-398d05e47186","name":"201 Created","originalRequest":{"method":"POST","header":[{"key":"API-KEY","value":"{{API-KEY}}","description":"API key provided by TSEG","type":"text"},{"key":"API-HASH","value":"{{API-HASH}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"address\": \"string\",\n    \"town\": \"string\",\n    \"postcode\": \"string\",\n    \"capacity\": 2,\n    \"start_date\": \"string\",\n    \"end_date\": \"string\",\n    \"udprn\": \"string\",\n    \"uprn\": \"string\",\n    \"unlimited\": false,\n    \"electricity\": true,\n    \"gas\": true,\n    \"water\": false,\n    \"broadband\": false,\n    \"tvl\": false\n}","options":{"raw":{"language":"json"}}},"url":"{{base_url}}/quote"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 20 Aug 2025 13:22:42 GMT"},{"key":"Content-Type","value":"application/json","description":"","type":"text"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"nginx"},{"key":"Cache-Control","value":"private, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"-1"},{"key":"X-RateLimit-Limit","value":"1000"},{"key":"X-RateLimit-Remaining","value":"999"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":" {\n    \"uuid\":\t\"<string>\",\n    //The UUID to use for future requests related to this quote.\n\n    \"address\":\t\"<string>\",\n    //Address lines including Town and Postcode\n\n    \"capacity\":\t\"integer\",\n    //The number of people that will be living at the property.\n\n    \"start_date\": \"<string>\",\n    //The date the quote will be started from in YYYY-MM-DD format.\n\n    \"end_date\":\t\"<string>\",\n    //The end date for the quote.\n\n    \"unlimited\": \"boolean\",\n    //True if the quote is using the unlimited tariff. Otherwise, false.\n\n    \"contract_reference\": \"<string>\",\n    //The reference to the generated contract once the quote has been completed.\n\n    \"quote_link\": \"<string>\",\n    //The unique link for unidentified tenants to be able to signup to.\n\n    \"services\": {\n    //The services attached to the quote. Each service can be null if it has not been requested or is unavailable. There is the possibility of a new property being added if a new service is offered.\n\n        \"electricity\":  {\n        //Price structure for an energy service quote. Service will only be displayed if selected on request.\n\n            \"monthly_price\": \"<number>\",\n            \"tenant_week\": \"<number>\",\n            \"tenant_month\":\t\"<number>\",\n            \"unit_rate\": \"<number>\",\n            \"standing_charge\": \"<number>\"\n        },\n    \n        \"gas\": {\n        //Price structure for an energy service quote. Service will only be displayed if selected on request.\n\n            \"monthly_price\": \"<number>\",\n            \"tenant_week\": \"<number>\",\n            \"tenant_month\":\t\"<number>\",\n            \"unit_rate\": \"<number>\",\n            \"standing_charge\": \"<number>\"\n        },\n    \n        \"water\": {\n        //Price structure for a service on a quote. Service will only be displayed if selected on request.\n\n            \"monthly_price\": \"<number>\",\n            \"tenant_week\": \"<number>\",\n            \"tenant_month\":\t\"<number>\"\n        },\n    \n        \"broadband\": {\n        //Broadband quotes for available package. Service will only be displayed if selected on request.\n\n            \"monthly_price\": \"<number>\",\n            \"tenant_week\": \"<number>\",\n            \"tenant_month\":\t\"<number>\",\n            \"provider\":\t\"<string>\",\n            \"package_name\": \"<string>\",\n            \"package_code\": \"<string>\",\n            \"min_speed\": \"<number>\",\n            \"max_speed\": \"<number>\",\n            \"estimated_speed\": \"<number>\"\n        },\n    \n        \"tvl\":  {\n        //Price structure for a service on a quote. Service will only be displayed if selected on request.\n\n            \"monthly_price\": \"<number>\",\n            \"tenant_week\": \"<number>\",\n            \"tenant_month\":\t\"<number>\"\n        }\n    },\n    \n    \"tenants\":  [\n    //The list of tenant details attached to the quote.\n        \n        {\n        //An object containing an individual tenants details.\n\n            \"uuid\":\t\"<string>\",\n            //The unique identifier for the tenant.\n\n            \"name\":\t\"<string>\",\n            //The tenants full name.\n\n            \"email\": \"<string>\",\n            //The tenants e-mail address.\n\n            \"mobile\": \"<string>\",\n            //The tenants mobile number.\n\n            \"tenant_resume_link\": \"<string>\",\n            //The unique link for this tenant to signup to the terms and conditions.\n\n            \"completed\": \"boolean\"\n            //True if we have the full customers details and they have signed up to the terms and conditions. Otherwise, false.\n        }\n    ]\n }"},{"id":"c1ec1429-b4d5-4a4c-bb5e-a5ce4ba83186","name":"400 Invalid Request","originalRequest":{"method":"POST","header":[{"key":"API-KEY","value":"{{API-KEY}}","description":"API key provided by TSEG","type":"text"},{"key":"API-HASH","value":"{{API-HASH}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"address\": \"string\",\n    \"town\": \"string\",\n    \"postcode\": \"string\",\n    \"capacity\": 2,\n    \"start_date\": \"string\",\n    \"end_date\": \"string\",\n    \"udprn\": \"string\",\n    \"uprn\": \"string\",\n    \"unlimited\": false,\n    \"electricity\": true,\n    \"gas\": true,\n    \"water\": false,\n    \"broadband\": false,\n    \"tvl\": false\n}","options":{"raw":{"language":"json"}}},"url":"{{base_url}}/quote"},"status":"Invalid Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 20 Aug 2025 13:22:42 GMT"},{"key":"Content-Type","value":"application/json","description":"","type":"text"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"nginx"},{"key":"Cache-Control","value":"private, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"-1"},{"key":"X-RateLimit-Limit","value":"1000"},{"key":"X-RateLimit-Remaining","value":"999"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":" {\n    \"error\": \"<string>\"\n    //Simple error message.\n }"}],"_postman_id":"0cb786c0-bd72-430b-919f-db929d4651f7"},{"name":"Update an existing Quote","event":[{"listen":"prerequest","script":{"id":"dc0fc6b7-0120-4749-bd65-2fb09ce0041e","exec":["// get secret","var secret = pm.environment.get(\"secret\");","// get request body","var req = request.data","var requestBody = pm.variables.replaceIn(pm.request.body.raw);","","// create HMAC SHA512 hash request body and secret","var hashHmacSHA512 = CryptoJS.enc.Hex.stringify(CryptoJS.HmacSHA512(requestBody, secret));","// add headers to request","//pm.request.headers.add({key: \"API-HASH\", value: hashHmacSHA512});","pm.environment.set(\"API-HASH\", hashHmacSHA512);",""],"type":"text/javascript","packages":{}}}],"id":"85b3414e-c955-4bf7-aff3-317d45c47f0b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[{"key":"API-KEY","value":"{{API-KEY}}","type":"text"},{"key":"API-HASH","value":"{{API-HASH}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"unlimited\": \"boolean\", //True if the quote should use the Unlimited tariff options. Otherwise, false.\n\n    \"electricity\": \"boolean\", //Quotes must have electricity. Therefore, this should be true.\n\n    \"gas\": \"boolean\", //True if the quote should have gas. Otherwise, false.\n\n    \"water\": \"boolean\", //True if the quote should have water. Otherwise, false.\n\n    \"broadband\": \"boolean\", //True if the quote should have broadband. Otherwise, false.\n\n    \"tvl\": \"boolean\" //True if the quote should have TV licence. Otherwise, false.\n}","options":{"raw":{"language":"json"}}},"url":"{{base_url}}/quote/{quote_uuid}","description":"<p>Update information on an incomplete quote. Any changes made can affect the price of services. Changes will be blocked once at least one tenant has signed terms and conditions.</p>\n<p><strong>Path Parameters:</strong></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>Type</strong></th>\n<th><strong>Desc</strong></th>\n<th><strong>Required</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>quote_uuid</td>\n<td>string</td>\n<td>The unique reference for the quote</td>\n<td>Y</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["quote","{quote_uuid}"],"host":["{{base_url}}"],"query":[],"variable":[]}},"response":[{"id":"6b66f683-4de3-47ba-9214-872d1d068f31","name":"200 OK","originalRequest":{"method":"PATCH","header":[{"key":"API-KEY","value":"{{API-KEY}}","type":"text"},{"key":"API-HASH","value":"{{API-HASH}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"unlimited\": \"boolean\", \n    \"electricity\": \"boolean\",\n    \"gas\": \"boolean\", \n    \"water\": \"boolean\",\n    \"broadband\": \"boolean\",\n    \"tvl\": \"boolean\" \n}","options":{"raw":{"language":"json"}}},"url":"{{base_url}}/quote/{quote_uuid}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":" {\n    \"uuid\":\t\"<string>\",\n    //The UUID to use for future requests related to this quote.\n\n    \"address\":\t\"<string>\",\n    //Address lines including Town and Postcode\n\n    \"capacity\":\t\"integer\",\n    //The number of people that will be living at the property.\n\n    \"start_date\": \"<string>\",\n    //The date the quote will be started from in YYYY-MM-DD format.\n\n    \"end_date\":\t\"<string>\",\n    //The end date for the quote.\n\n    \"unlimited\": \"boolean\",\n    //True if the quote is using the unlimited tariff. Otherwise, false.\n\n    \"contract_reference\": \"<string>\",\n    //The reference to the generated contract once the quote has been completed.\n\n    \"quote_link\": \"<string>\",\n    //The unique link for unidentified tenants to be able to signup to.\n\n    \"services\": {\n    //The services attached to the quote. Each service can be null if it has not been requested or is unavailable. There is the possibility of a new property being added if a new service is offered.\n\n        \"electricity\":  {\n        //Price structure for an energy service quote. Service will only be displayed if selected on request.\n\n            \"monthly_price\": \"<number>\",\n            \"tenant_week\": \"<number>\",\n            \"tenant_month\":\t\"<number>\",\n            \"unit_rate\": \"<number>\",\n            \"standing_charge\": \"<number>\"\n        },\n    \n        \"gas\": {\n        //Price structure for an energy service quote. Service will only be displayed if selected on request.\n\n            \"monthly_price\": \"<number>\",\n            \"tenant_week\": \"<number>\",\n            \"tenant_month\":\t\"<number>\",\n            \"unit_rate\": \"<number>\",\n            \"standing_charge\": \"<number>\"\n        },\n    \n        \"water\": {\n        //Price structure for a service on a quote. Service will only be displayed if selected on request.\n\n            \"monthly_price\": \"<number>\",\n            \"tenant_week\": \"<number>\",\n            \"tenant_month\":\t\"<number>\"\n        },\n    \n        \"broadband\": {\n        //Broadband quotes for available package. Service will only be displayed if selected on request.\n\n            \"monthly_price\": \"<number>\",\n            \"tenant_week\": \"<number>\",\n            \"tenant_month\":\t\"<number>\",\n            \"provider\":\t\"<string>\",\n            \"package_name\": \"<string>\",\n            \"package_code\": \"<string>\",\n            \"min_speed\": \"<number>\",\n            \"max_speed\": \"<number>\",\n            \"estimated_speed\": \"<number>\"\n        },\n    \n        \"tvl\":  {\n        //Price structure for a service on a quote. Service will only be displayed if selected on request.\n\n            \"monthly_price\": \"<number>\",\n            \"tenant_week\": \"<number>\",\n            \"tenant_month\":\t\"<number>\"\n        }\n    },\n    \n    \"tenants\":  [\n    //The list of tenant details attached to the quote.\n        \n        {\n        //An object containing an individual tenants details.\n\n            \"uuid\":\t\"<string>\",\n            //The unique identifier for the tenant.\n\n            \"name\":\t\"<string>\",\n            //The tenants full name.\n\n            \"email\": \"<string>\",\n            //The tenants e-mail address.\n\n            \"mobile\": \"<string>\",\n            //The tenants mobile number.\n\n            \"tenant_resume_link\": \"<string>\",\n            //The unique link for this tenant to signup to the terms and conditions.\n\n            \"completed\": \"boolean\"\n            //True if we have the full customers details and they have signed up to the terms and conditions. Otherwise, false.\n        }\n    ]\n }"},{"id":"2a74e4c0-074c-44c1-9a29-72492f750da8","name":"400 Invalid request","originalRequest":{"method":"PATCH","header":[{"key":"API-KEY","value":"{{API-KEY}}","type":"text"},{"key":"API-HASH","value":"{{API-HASH}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"unlimited\": \"boolean\", \n    \"electricity\": \"boolean\",\n    \"gas\": \"boolean\", \n    \"water\": \"boolean\",\n    \"broadband\": \"boolean\",\n    \"tvl\": \"boolean\" \n}","options":{"raw":{"language":"json"}}},"url":"{{base_url}}/quote/{quote_uuid}"},"status":"Invalid request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"error\": \"<string>\"\n    //Simple error message.\n}"},{"id":"99b8d346-815b-4824-9474-c860e5158321","name":"404 Quote Not Found","originalRequest":{"method":"PATCH","header":[{"key":"API-KEY","value":"{{API-KEY}}","type":"text"},{"key":"API-HASH","value":"{{API-HASH}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"unlimited\": \"boolean\", \n    \"electricity\": \"boolean\",\n    \"gas\": \"boolean\", \n    \"water\": \"boolean\",\n    \"broadband\": \"boolean\",\n    \"tvl\": \"boolean\" \n}","options":{"raw":{"language":"json"}}},"url":"{{base_url}}/quote/{quote_uuid}"},"status":"Invalid request","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"error\": \"<string>\"\n    //Simple error message.\n}"}],"_postman_id":"85b3414e-c955-4bf7-aff3-317d45c47f0b"}],"id":"93612d93-ddc8-4034-bc48-5ae91740a375","_postman_id":"93612d93-ddc8-4034-bc48-5ae91740a375","description":""},{"name":"Tenant","item":[{"name":"Add a tenant to a quote","event":[{"listen":"prerequest","script":{"id":"dc0fc6b7-0120-4749-bd65-2fb09ce0041e","exec":["// get secret","var secret = pm.environment.get(\"secret\");","// get request body","var req = request.data","var requestBody = pm.variables.replaceIn(pm.request.body.raw);","","// create HMAC SHA512 hash request body and secret","var hashHmacSHA512 = CryptoJS.enc.Hex.stringify(CryptoJS.HmacSHA512(requestBody, secret));","// add headers to request","//pm.request.headers.add({key: \"API-HASH\", value: hashHmacSHA512});","pm.environment.set(\"API-HASH\", hashHmacSHA512);",""],"type":"text/javascript","packages":{}}}],"id":"7431c4b2-b56c-4b92-bd8c-543dc16af91a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"API-KEY","value":"{{API-KEY}}","type":"text"},{"key":"API-HASH","value":"{{API-HASH}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"firstname\": \"string\", //First name\n\n    \"lastname\":\t\"string\", //Last name\n\n    \"email\": \"string\", //E-mail address. Required if mobile number is not passed.\n\n    \"mobile\": \"string\", //Mobile number. Required if e-mail address is not passed.\n\n    \"completed\": \"boolean\" //True if the individual has already agreed to terms and conditions. Otherwise, false. This feature is turned off by default and needs to be granted.\n}","options":{"raw":{"language":"json"}}},"url":"{{base_url}}/quote/{quote_uuid}/tenant","description":"<p>Provide tenant details and attach them to an existing quote. The number of tenants must not exceed the capacity on the quote.</p>\n<p><strong>Path Parameters:</strong></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>Type</strong></th>\n<th><strong>Desc</strong></th>\n<th><strong>Required</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>quote_uuid</td>\n<td>string</td>\n<td>The unique reference for the quote.</td>\n<td>Y</td>\n</tr>\n<tr>\n<td>tenant_uuid</td>\n<td>string</td>\n<td>The unique reference for the tenant.</td>\n<td>Y</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["quote","{quote_uuid}","tenant"],"host":["{{base_url}}"],"query":[],"variable":[]}},"response":[{"id":"33e37ca0-d1f8-4ca1-a62a-7fe1526d8471","name":"201 Success","originalRequest":{"method":"POST","header":[{"key":"API-KEY","value":"{{API-KEY}}","type":"text"},{"key":"API-HASH","value":"{{API-HASH}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"firstname\": \"string\",\n    \"lastname\": \"string\",\n    \"email\": \"string\",\n    \"mobile\": \"string\",\n    \"completed\": \"boolean\"\n}","options":{"raw":{"language":"json"}}},"url":"{{base_url}}/quote/{quote_uuid}/tenant"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 21 Aug 2025 10:17:47 GMT"},{"key":"Content-Type","value":"application/json","description":"","type":"text"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"nginx"},{"key":"Cache-Control","value":"private, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"-1"},{"key":"X-RateLimit-Limit","value":"1000"},{"key":"X-RateLimit-Remaining","value":"998"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n//An object containing an individual tenants details.\n\n    \"uuid\": \"<string>\",\n    // The unique identifier for the tenant.\n\n    \"name\": \"<string>\",\n    // The tenants full name.\n\n    \"email\": \"<string>\",\n    // The tenants e-mail address.\n\n    \"mobile\": \"<string>\",\n    // The tenants mobile number.\n\n    \"tenant_resume_link\": \"<string>\",\n    // The unique link for this tenant to signup to the terms and conditions.\n\n    \"completed\": \"<boolean>\"\n    // True if we have the full customers details and they have signed up to the terms and conditions. Otherwise, false.\n}"},{"id":"550072e0-94d1-4ce7-a4f2-079fe0520d3e","name":"400 Invalid request","originalRequest":{"method":"POST","header":[{"key":"API-KEY","value":"{{API-KEY}}","type":"text"},{"key":"API-HASH","value":"{{API-HASH}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"firstname\": \"string\",\n    \"lastname\": \"string\",\n    \"email\": \"string\",\n    \"mobile\": \"string\",\n    \"completed\": \"boolean\"\n}","options":{"raw":{"language":"json"}}},"url":"{{base_url}}/quote/{quote_uuid}/tenant"},"status":"Invalid request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"error\": \"<string>\"\n    //Simple error message.\n}"}],"_postman_id":"7431c4b2-b56c-4b92-bd8c-543dc16af91a"},{"name":"Update a tenant on a quote Copy","event":[{"listen":"prerequest","script":{"id":"dc0fc6b7-0120-4749-bd65-2fb09ce0041e","exec":["// get secret","var secret = pm.environment.get(\"secret\");","// get request body","var req = request.data","var requestBody = pm.variables.replaceIn(pm.request.body.raw);","","// create HMAC SHA512 hash request body and secret","var hashHmacSHA512 = CryptoJS.enc.Hex.stringify(CryptoJS.HmacSHA512(requestBody, secret));","// add headers to request","//pm.request.headers.add({key: \"API-HASH\", value: hashHmacSHA512});","pm.environment.set(\"API-HASH\", hashHmacSHA512);",""],"type":"text/javascript","packages":{}}}],"id":"50068f12-3d6e-4295-9c4b-8bde0ee99110","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[{"key":"API-KEY","value":"{{API-KEY}}","type":"text"},{"key":"API-HASH","value":"{{API-HASH}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"completed\": \"boolean\"\n}","options":{"raw":{"language":"json"}}},"url":"{{base_url}}/quote/{quote_uuid}/tenant/{tenant_uuid}","description":"<p>Update the 'completed' status on an incomplete tenant linked to an quote. This feature is turned off by default and needs to be granted.</p>\n<p><strong>Path Parameters:</strong></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>Type</strong></th>\n<th><strong>Desc</strong></th>\n<th><strong>Required</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>quote_uuid</td>\n<td>string</td>\n<td>The unique reference for the quote.</td>\n<td>Y</td>\n</tr>\n<tr>\n<td>tenant_uuid</td>\n<td>string</td>\n<td>The unique reference for the tenant.</td>\n<td>Y</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["quote","{quote_uuid}","tenant","{tenant_uuid}"],"host":["{{base_url}}"],"query":[],"variable":[]}},"response":[{"id":"e3c00749-6792-464f-9bd3-7b10130a957a","name":"200 OK","originalRequest":{"method":"PATCH","header":[{"key":"API-KEY","value":"{{API-KEY}}","type":"text"},{"key":"API-HASH","value":"{{API-HASH}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"firstname\": \"string\",\n    \"lastname\": \"string\",\n    \"email\": \"string\",\n    \"mobile\": \"string\",\n    \"completed\": \"boolean\"\n}","options":{"raw":{"language":"json"}}},"url":"{{base_url}}/quote/{quote_uuid}/tenant/{tenant_uuid}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 21 Aug 2025 10:17:47 GMT"},{"key":"Content-Type","value":"application/json","description":"","type":"text"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Server","value":"nginx"},{"key":"Cache-Control","value":"private, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"-1"},{"key":"X-RateLimit-Limit","value":"1000"},{"key":"X-RateLimit-Remaining","value":"998"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n//An object containing an individual tenants details.\n\n    \"uuid\": \"<string>\",\n    // The unique identifier for the tenant.\n\n    \"name\": \"<string>\",\n    // The tenants full name.\n\n    \"email\": \"<string>\",\n    // The tenants e-mail address.\n\n    \"mobile\": \"<string>\",\n    // The tenants mobile number.\n\n    \"tenant_resume_link\": \"<string>\",\n    // The unique link for this tenant to signup to the terms and conditions.\n\n    \"completed\": \"<boolean>\"\n    // True if we have the full customers details and they have signed up to the terms and conditions. Otherwise, false.\n}"},{"id":"7ad5fe71-6488-4f4a-9d6c-0443844d0c3c","name":"400 Invalid request","originalRequest":{"method":"PATCH","header":[{"key":"API-KEY","value":"{{API-KEY}}","type":"text"},{"key":"API-HASH","value":"{{API-HASH}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"firstname\": \"string\",\n    \"lastname\": \"string\",\n    \"email\": \"string\",\n    \"mobile\": \"string\",\n    \"completed\": \"boolean\"\n}","options":{"raw":{"language":"json"}}},"url":"{{base_url}}/quote/{quote_uuid}/tenant/{tenant_uuid}"},"status":"Invalid request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"error\": \"<string>\"\n    //Simple error message.\n}"},{"id":"311e0abd-81a2-4f6b-baba-d1e6a9b79b73","name":"404 - Tenant not found","originalRequest":{"method":"PATCH","header":[{"key":"API-KEY","value":"{{API-KEY}}","type":"text"},{"key":"API-HASH","value":"{{API-HASH}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"firstname\": \"string\",\n    \"lastname\": \"string\",\n    \"email\": \"string\",\n    \"mobile\": \"string\",\n    \"completed\": \"boolean\"\n}","options":{"raw":{"language":"json"}}},"url":"{{base_url}}/quote/{quote_uuid}/tenant/{tenant_uuid}"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"error\": \"<string>\"\n    //Simple error message.\n}"}],"_postman_id":"50068f12-3d6e-4295-9c4b-8bde0ee99110"}],"id":"93a9e3a0-08a2-4b86-93f7-50cdff86bc41","_postman_id":"93a9e3a0-08a2-4b86-93f7-50cdff86bc41","description":""}]}