{"info":{"_postman_id":"bd46f7ec-2f39-4add-9eff-160cb4bda033","name":"True Compliance Public API v2","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"description":"<html><head></head><body></body></html>","owner":"5479160","collectionId":"bd46f7ec-2f39-4add-9eff-160cb4bda033","publishedId":"2sBXwjuDC6","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"2D68C5"},"publishDate":"2026-05-20T11:37:00.000Z"},"item":[{"name":"Action","item":[{"name":"Get Actions","event":[{"listen":"test","script":{"id":"fa6bfab8-ef6c-44a9-b07d-937fa6d0a076","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"f29f14d0-cfdd-481e-b3fd-ed2c9b0d6d15","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"}],"url":"{{public_api_v2_domain}}action","description":"<h2 id=\"get-actions\">Get Actions</h2>\n<p>Retrieves a paginated list of actions. Results can be filtered by action type, status, associated certificate, property, or material, as well as by creation or update date ranges.</p>\n<hr />\n<h2 id=\"query-parameters\">Query Parameters</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>Required</th>\n<th>Default</th>\n<th>Description</th>\n<th>Example</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>page</code></td>\n<td>integer</td>\n<td>Optional</td>\n<td><code>1</code></td>\n<td>Page number for pagination</td>\n<td><code>1</code></td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>Optional</td>\n<td><code>100</code></td>\n<td>Number of results per page</td>\n<td><code>50</code></td>\n</tr>\n<tr>\n<td><code>action_type</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>—</td>\n<td>Comma-separated list of action types. Available values can be retrieved via <code>GET library/action-types</code></td>\n<td><code>Water Risk Actions,Fire Risk Actions</code></td>\n</tr>\n<tr>\n<td><code>action_status</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>—</td>\n<td>Comma-separated list of action statuses. Available values can be retrieved via <code>GET library/action-statuses</code></td>\n<td><code>Open,Closed</code></td>\n</tr>\n<tr>\n<td><code>certificate_id</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>—</td>\n<td>Filter results by a specific certificate ID</td>\n<td><code>cert_abc123</code></td>\n</tr>\n<tr>\n<td><code>property_id</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>—</td>\n<td>Filter results by a specific property ID</td>\n<td><code>prop_xyz456</code></td>\n</tr>\n<tr>\n<td><code>material_id</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>—</td>\n<td>Filter results by a specific material ID</td>\n<td><code>mat_789def</code></td>\n</tr>\n<tr>\n<td><code>created_before</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>—</td>\n<td>Return actions created before this date. Format: <code>YYYY-MM-DD</code></td>\n<td><code>2024-12-31</code></td>\n</tr>\n<tr>\n<td><code>created_since</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>—</td>\n<td>Return actions created on or after this date. Format: <code>YYYY-MM-DD</code></td>\n<td><code>2024-01-01</code></td>\n</tr>\n<tr>\n<td><code>updated_before</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>—</td>\n<td>Return actions last updated before this date. Format: <code>YYYY-MM-DD</code></td>\n<td><code>2024-12-31</code></td>\n</tr>\n<tr>\n<td><code>updated_since</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>—</td>\n<td>Return actions last updated on or after this date. Format: <code>YYYY-MM-DD</code></td>\n<td><code>2024-01-01</code></td>\n</tr>\n<tr>\n<td><code>shallow</code></td>\n<td>boolean</td>\n<td>Optional</td>\n<td><code>false</code></td>\n<td>When <code>true</code>, returns a shallow response with no nested relationships</td>\n<td><code>true</code></td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p><strong>Comma-separated list parameters:</strong> <code>action_type</code> and <code>action_status</code> accept multiple values as a comma-separated string (e.g., <code>Open,Closed</code>). Use the corresponding library endpoints to retrieve all valid values:</p>\n<ul>\n<li><p>Action types: <code>GET library/action-types</code></p>\n</li>\n<li><p>Action statuses: <code>GET library/action-statuses</code></p>\n</li>\n</ul>\n</li>\n<li><p><strong>Date filters</strong> (<code>created_before</code>, <code>created_since</code>, <code>updated_before</code>, <code>updated_since</code>) must follow the <code>YYYY-MM-DD</code> format.</p>\n</li>\n</ul>\n","urlObject":{"host":["{{public_api_v2_domain}}action"],"query":[{"disabled":true,"key":"limit","value":"100"},{"disabled":true,"key":"page","value":"1"},{"disabled":true,"description":{"content":"<p>Comma separated list of action types. You can find these by calling GET library/action-types</p>\n","type":"text/plain"},"key":"action_type","value":"Water Risk Actions,Fire Risk Actions"},{"disabled":true,"description":{"content":"<p>Comma separated list of action statuses. You can find these by calling GET library/action-statuses</p>\n","type":"text/plain"},"key":"action_status","value":"Open,Closed"},{"disabled":true,"key":"certificate_id","value":""},{"disabled":true,"key":"property_id","value":""},{"disabled":true,"key":"material_id","value":""},{"disabled":true,"description":{"content":"<p>YYYY-MM-DD</p>\n","type":"text/plain"},"key":"created_before","value":"2020-01-10"},{"disabled":true,"description":{"content":"<p>YYYY-MM-DD</p>\n","type":"text/plain"},"key":"created_since","value":"2025-01-10"},{"disabled":true,"description":{"content":"<p>YYYY-MM-DD</p>\n","type":"text/plain"},"key":"updated_before","value":"2020-01-10"},{"disabled":true,"description":{"content":"<p>YYYY-MM-DD</p>\n","type":"text/plain"},"key":"updated_since","value":"2025-01-10"},{"disabled":true,"description":{"content":"<p>Return shallow response (no nested relationships)</p>\n","type":"text/plain"},"key":"shallow","value":"false"}],"variable":[]}},"response":[{"id":"446420dc-2840-4c12-8245-98e454f41a52","name":"200 OK","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"}],"url":{"raw":"{{public_api_v2_domain}}action","host":["{{public_api_v2_domain}}action"],"query":[{"key":"limit","value":"100","disabled":true},{"key":"page","value":"1","disabled":true},{"key":"action_type","value":"Water Risk Actions,Fire Risk Actions","description":"Comma separated list of action types. You can find these by calling GET library/action-types","disabled":true},{"key":"action_status","value":"Open,Closed","description":"Comma separated list of action statuses. You can find these by calling GET library/action-statuses","disabled":true},{"key":"certificate_id","value":"","type":"text","disabled":true},{"key":"property_id","value":"","type":"text","disabled":true},{"key":"material_id","value":"","disabled":true},{"key":"created_before","value":"2020-01-10","description":"YYYY-MM-DD","type":"text","disabled":true},{"key":"created_since","value":"2025-01-10","description":"YYYY-MM-DD","type":"text","disabled":true},{"key":"updated_before","value":"2020-01-10","description":"YYYY-MM-DD","type":"text","disabled":true},{"key":"updated_since","value":"2025-01-10","description":"YYYY-MM-DD","type":"text","disabled":true},{"key":"shallow","value":"false","description":"Return shallow response (no nested relationships)","disabled":true}]}},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"id\": 123456,\n            \"action_type\": \"Water Risk Actions\",\n            \"action_status\": \"Sent For Approval\",\n            \"team\": \"Fire Team\",\n            \"owner\": \"Mr Dave Example\",\n            \"values\": {\n                \"Site Risk Rating\": \"5\",\n                \"Priority\": \"High\",\n                \"Issue\": \"No policy identified.\",\n                \"Regulation\": \"Health and Safety at Work etc. Act 1974 S2(3).\",\n                \"Refernece\": \"There is a legal requirement for a written safety policy where five or more employees exist.\",\n                \"Required Action\": \"Produce a policy that includes Legionella management in line with HSG 65.\",\n                \"Action No\": \"1\"\n            },\n            \"certificate_id\": 123456,\n            \"property_id\": 123456,\n            \"material_id\": null,\n            \"deadline\": \"2027-03-11\",\n            \"completed_at\": \"2026-12-22 12:43:25\",\n            \"approved_at\": null,\n            \"created_at\": \"2026-04-17 12:16:12\",\n            \"updated_at\": \"2026-12-12 01:01:12\",\n            \"certificate\": {\n                \"certificate_id\": 123456,\n                \"certificate_instance\": \"WRA Contractor Assessment\",\n                \"certificate_type\": \"WRA\",\n                \"document_id\": 123456,\n                \"contractor\": \"Test Contractor\",\n                \"issue_date\": \"2026-12-12\",\n                \"certificate_number\": \"ABC-123\"\n            },\n            \"property\": {\n                \"property_id\": 123456,\n                \"uprn\": \"B999999\",\n                \"property_full_address\": \"123 Main Road, London, N99 1AB\"\n            },\n            \"material\": null,\n            \"notes\": [\n                {\n                    \"note\": \"This has been reviewed by the team and completed.\",\n                    \"user\": \"Mr Bob User\",\n                    \"tags\": [],\n                    \"created_at\": \"2026-12-22 12:43:22\",\n                    \"updated_at\": \"2026-12-22 12:43:22\"\n                }\n            ],\n            \"logs\": [\n                {\n                    \"email\": \"bob@example.com\",\n                    \"message\": \"This actions status was updated to Sent For Approval. \",\n                    \"user\": \"Mr Bob User\",\n                    \"created_at\": \"2026-12-22 12:43:25\",\n                    \"updated_at\": \"2026-12-22 12:43:25\"\n                },\n                {\n                    \"email\": \"bob@example.com\",\n                    \"message\": \"This action was updated.\",\n                    \"user\": \"Mr Bob User\",\n                    \"created_at\": \"2026-12-22 12:43:25\",\n                    \"updated_at\": \"2026-12-22 12:43:25\"\n                }\n            ]\n        },\n        {\n            \"id\": 123457,\n            \"action_type\": \"EICR Observations\",\n            \"action_status\": \"Open\",\n            \"team\": null,\n            \"owner\": null,\n            \"values\": {\n                \"Observation Item Number\": \"1\",\n                \"Observation\": \"PLASTIC DB\",\n                \"Observation Code\": \"C3\"\n            },\n            \"certificate_id\": 123457,\n            \"property_id\": 123457,\n            \"material_id\": null,\n            \"deadline\": \"2019-09-02\",\n            \"completed_at\": null,\n            \"approved_at\": null,\n            \"created_at\": \"2020-12-17 16:42:38\",\n            \"updated_at\": \"2024-06-05 01:01:15\",\n            \"certificate\": {\n                \"certificate_id\": 123457,\n                \"certificate_instance\": \"Communal EICR 18th (2018)\",\n                \"certificate_type\": \"EICR\",\n                \"document_id\": 123457,\n                \"contractor\": \"Test Contractor\",\n                \"issue_date\": \"2019-06-04\",\n                \"certificate_number\": \"ABC-002\"\n            },\n            \"property\": {\n                \"property_id\": 123457,\n                \"uprn\": \"B999991\",\n                \"property_full_address\": \"124 Main Road, London, N99 3AB\"\n            },\n            \"material\": null,\n            \"notes\": [],\n            \"logs\": []\n        }\n    ],\n    \"links\": {\n        \"first\": \"https://{{api-domain}}/api/v2/action?page=1\",\n        \"last\": null,\n        \"prev\": null,\n        \"next\": \"https://{{api-domain}}/api/v2/action?page=2\"\n    },\n    \"meta\": {\n        \"current_page\": 1,\n        \"current_page_url\": \"https://{{api-domain}}/api/v2/action?page=1\",\n        \"from\": 1,\n        \"path\": \"https://{{api-domain}}/api/v2/action\",\n        \"per_page\": \"2\",\n        \"to\": 2\n    }\n}"}],"_postman_id":"f29f14d0-cfdd-481e-b3fd-ed2c9b0d6d15"},{"name":"Get Action","event":[{"listen":"test","script":{"id":"6ab82aa4-f866-473c-b088-34a5f3c646e5","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"b2ea1493-cc39-439c-8da2-877652a169db","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{public_api_v2_domain}}action/{{action_id}}","description":"<h2 id=\"get-action\">Get Action</h2>\n<p>Retrieves a single action by its unique identifier.</p>\n<hr />\n<h2 id=\"path-variables\">Path Variables</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Variable</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n<th>Example</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>action_id</code></td>\n<td>string</td>\n<td>Required</td>\n<td>The unique identifier of the action to retrieve</td>\n<td><code>123456</code></td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"query-parameters\">Query Parameters</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>Required</th>\n<th>Default</th>\n<th>Description</th>\n<th>Example</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>shallow</code></td>\n<td>boolean</td>\n<td>Optional</td>\n<td><code>false</code></td>\n<td>When <code>true</code>, returns a shallow response with no nested relationships</td>\n<td><code>true</code></td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p>The <code>action_id</code> path variable must correspond to an existing action. If the action is not found, a <code>404</code> response will be returned.</p>\n</li>\n<li><p>Set <code>shallow</code> to <code>true</code> to reduce response payload size by omitting nested relationship data.</p>\n</li>\n</ul>\n","urlObject":{"path":["{{action_id}}"],"host":["{{public_api_v2_domain}}action"],"query":[{"disabled":true,"description":{"content":"<p>Return shallow response (no nested relationships)</p>\n","type":"text/plain"},"key":"shallow","value":"false"}],"variable":[]}},"response":[{"id":"729bb6ca-f5a7-4e15-9480-f63b8bb522fb","name":"200 OK","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"{{public_api_v2_domain}}action/{{action_id}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 123456,\n        \"action_type\": \"Water Risk Actions\",\n        \"action_status\": \"Sent For Approval\",\n        \"team\": \"Fire Team\",\n        \"owner\": \"Mr Dave Example\",\n        \"values\": {\n            \"Site Risk Rating\": \"5\",\n            \"Priority\": \"High\",\n            \"Issue\": \"No policy identified.\",\n            \"Regulation\": \"Health and Safety at Work etc. Act 1974 S2(3).\",\n            \"Refernece\": \"There is a legal requirement for a written safety policy where five or more employees exist.\",\n            \"Required Action\": \"Produce a policy that includes Legionella management in line with HSG 65.\",\n            \"Action No\": \"1\"\n        },\n        \"certificate_id\": 123456,\n        \"property_id\": 123456,\n        \"material_id\": null,\n        \"deadline\": \"2027-03-11\",\n        \"completed_at\": \"2026-12-22 12:43:25\",\n        \"approved_at\": null,\n        \"created_at\": \"2026-04-17 12:16:12\",\n        \"updated_at\": \"2026-12-12 01:01:12\",\n        \"certificate\": {\n            \"certificate_id\": 123456,\n            \"certificate_instance\": \"WRA Contractor Assessment\",\n            \"certificate_type\": \"WRA\",\n            \"document_id\": 123456,\n            \"contractor\": \"Test Contractor\",\n            \"issue_date\": \"2026-12-12\",\n            \"certificate_number\": \"ABC-123\"\n        },\n        \"property\": {\n            \"property_id\": 123456,\n            \"uprn\": \"B999999\",\n            \"property_full_address\": \"123 Main Road, London, N99 1AB\"\n        },\n        \"material\": null,\n        \"notes\": [\n            {\n                \"note\": \"This has been reviewed by the team and completed.\",\n                \"user\": \"Mr Bob User\",\n                \"tags\": [],\n                \"created_at\": \"2026-12-22 12:43:22\",\n                \"updated_at\": \"2026-12-22 12:43:22\"\n            }\n        ],\n        \"logs\": [\n            {\n                \"email\": \"bob@example.com\",\n                \"message\": \"This actions status was updated to Sent For Approval. \",\n                \"user\": \"Mr Bob User\",\n                \"created_at\": \"2026-12-22 12:43:25\",\n                \"updated_at\": \"2026-12-22 12:43:25\"\n            },\n            {\n                \"email\": \"bob@example.com\",\n                \"message\": \"This action was updated.\",\n                \"user\": \"Mr Bob User\",\n                \"created_at\": \"2026-12-22 12:43:25\",\n                \"updated_at\": \"2026-12-22 12:43:25\"\n            }\n        ]\n    }\n}"}],"_postman_id":"b2ea1493-cc39-439c-8da2-877652a169db"},{"name":"Add Flag","id":"fd1108e1-38de-44ea-8061-ba471537a992","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"flag_name\": \"Capped Meter\",\n    \"expiry_date\": \"2026-03-02\"\n}","options":{"raw":{"language":"json"}}},"url":"{{public_api_v2_domain}}action/{{action_id}}/flag","description":"<p>Adds a flag to a specific Action, allowing you to mark it with a named flag and an optional expiry date.</p>\n<h2 id=\"path-variables\">Path Variables</h2>\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>action_id</code></td>\n<td>The unique identifier of the Action to flag.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"request-body\">Request Body</h2>\n<p>The request body must be sent as JSON.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>flag_name</code></td>\n<td>String</td>\n<td>Yes</td>\n<td>The name of the flag to apply to the Action (e.g. <code>\"Capped Meter\"</code>).</td>\n</tr>\n<tr>\n<td><code>expiry_date</code></td>\n<td>String (date)</td>\n<td>No</td>\n<td>The date on which the flag expires, in <code>YYYY-MM-DD</code> format (e.g. <code>\"2026-03-02\"</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response\">Response</h2>\n<p>Returns a <code>200 OK</code> on success.</p>\n<h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p><strong>Flags:</strong> Use the library endpoint to retrieve all valid values for <code>flag_name</code>:</p>\n<ul>\n<li><code>GET library/flags</code></li>\n</ul>\n</li>\n</ul>\n","urlObject":{"path":["{{action_id}}","flag"],"host":["{{public_api_v2_domain}}action"],"query":[],"variable":[]}},"response":[],"_postman_id":"fd1108e1-38de-44ea-8061-ba471537a992"},{"name":"Add a Note to an Action","event":[{"listen":"test","script":{"id":"3f44cbaa-72b7-4772-9089-26163b2184e3","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"608f56e9-ce8a-4ed9-b920-7548404947cb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"key":"note","value":"This is my note to add","type":"text","description":"<p>String</p>\n"},{"key":"evidence","description":"<p>File. Optional. 1mb max filesize.</p>\n","type":"file","src":"postman-cloud:///1f0b0e05-44f4-4750-b39c-8f0b6f5955b0"}]},"url":"{{public_api_v2_domain}}action/{{action_id}}/note","description":"<p>Will add a note to an Action, with optional attachment.</p>\n","urlObject":{"path":["{{action_id}}","note"],"host":["{{public_api_v2_domain}}action"],"query":[],"variable":[]}},"response":[],"_postman_id":"608f56e9-ce8a-4ed9-b920-7548404947cb"},{"name":"Close an Action","event":[{"listen":"test","script":{"id":"85bb63b0-9666-429c-aa0b-5baf536dbe95","exec":[""],"type":"text/javascript","packages":{},"requests":{}}}],"id":"1ea4c654-20d0-4ec7-b35c-ce2881a68298","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"key":"evidence","description":"<p>File. Optional. 1mb max filesize.</p>\n","type":"file","src":"postman-cloud:///1f0b0e05-44f4-4750-b39c-8f0b6f5955b0"},{"key":"note","value":"A completion note","description":"<p>String</p>\n","type":"text"},{"key":"completed_by","value":"geoff.bronson@nhg.org.uk","description":"<p>A valid email address</p>\n","type":"text"},{"key":"approved_by","value":"helen.griffey@nhg.org.uk","description":"<p>A valid email address</p>\n","type":"text"},{"key":"_method","value":"PATCH","type":"text","uuid":"44f40da4-0fc2-4db6-99af-a7053d1666b6"}]},"url":"{{public_api_v2_domain}}action/{{action_id}}/close","description":"<p>Closes a specific Action, marking it as complete.</p>\n<h2 id=\"path-variables\">Path Variables</h2>\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>action_id</code></td>\n<td>The unique identifier of the Action to close.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"request-body\">Request Body</h2>\n<p>The request body must be sent as <code>multipart/form-data</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>completed_by</code></td>\n<td>String (email)</td>\n<td>Yes</td>\n<td>The email address of the user who completed the Action.</td>\n</tr>\n<tr>\n<td><code>approved_by</code></td>\n<td>String (email)</td>\n<td>Yes</td>\n<td>The email address of the user who approved the closure.</td>\n</tr>\n<tr>\n<td><code>note</code></td>\n<td>String</td>\n<td>Yes</td>\n<td>A completion note to attach to the Action.</td>\n</tr>\n<tr>\n<td><code>evidence</code></td>\n<td>File</td>\n<td>No</td>\n<td>An optional supporting file. Maximum file size: 1 MB.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p><strong>Users:</strong> Use the library endpoint to retrieve all valid users for <code>completed_by</code> and `approved_by`:</p>\n<ul>\n<li><code>GET library/users</code></li>\n</ul>\n</li>\n</ul>\n","urlObject":{"path":["{{action_id}}","close"],"host":["{{public_api_v2_domain}}action"],"query":[],"variable":[]}},"response":[],"_postman_id":"1ea4c654-20d0-4ec7-b35c-ce2881a68298"},{"name":"Reassign Action","event":[{"listen":"test","script":{"id":"1ac7a255-ce8d-43b9-8965-2dc1751b1874","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"cfe01046-a2a7-46da-9d93-a2dffb9df767","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"PATCH","header":[{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"owner\": \"{{owner_email}}\",\n    \"team\": \"{{team_name}}\"\n}","options":{"raw":{"language":"json"}}},"url":"{{public_api_v2_domain}}action/{{action_id}}/reassign","description":"<p>Change the ownership of an action. Both owner and team are optional, but one of them must be present.</p>\n<h2 id=\"path-variables\">Path Variables</h2>\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>action_id</code></td>\n<td>The unique identifier of the Action to flag.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"request-body\">Request Body</h2>\n<p>The request body must be sent as JSON.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>owner</code></td>\n<td>String</td>\n<td>If <code>team</code> not present</td>\n<td>The email of the user to assign this action to.</td>\n</tr>\n<tr>\n<td><code>team</code></td>\n<td>String</td>\n<td>If <code>owner</code> not present</td>\n<td>The name of the team to assign this action to.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response\">Response</h2>\n<p>Returns a <code>200 OK</code> on success.</p>\n<h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p><strong>Users / Teams:</strong> Use the corresponding library endpoint to retrieve all valid values:</p>\n<ul>\n<li><p>Users: <code>GET library/users</code></p>\n</li>\n<li><p>Teams: <code>GET library/teams</code></p>\n</li>\n</ul>\n</li>\n</ul>\n","urlObject":{"path":["{{action_id}}","reassign"],"host":["{{public_api_v2_domain}}action"],"query":[],"variable":[]}},"response":[],"_postman_id":"cfe01046-a2a7-46da-9d93-a2dffb9df767"},{"name":"Change Status","event":[{"listen":"test","script":{"id":"aafff6ed-4a14-44d7-a9f6-d466bafb06a1","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"ed1d378c-30f7-44aa-8065-69754af27e78","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"PATCH","header":[{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"action_status\": \"sent for approval\",\n    \"completed_by\": \"{{user_email}}\"\n}","options":{"raw":{"language":"json"}}},"url":"{{public_api_v2_domain}}action/{{action_id}}/change-status","description":"<p>This will change the action to any status other than Closed (to close an action use the \"Close an Action\" endpoint).</p>\n<p>action_status must be either:</p>\n<p><code>Open</code><br /><code>Sent for Approval</code><br /><code>Rejected</code></p>\n<p>If the new status is <code>Sent for Approval</code> you can optionally send the <code>completed_by</code>, which is the email address of the user who completed the action. If omitted the completed_by user will be the authenticated API user.</p>\n<h2 id=\"path-variables\">Path Variables</h2>\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>action_id</code></td>\n<td>The unique identifier of the Action to flag.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"request-body\">Request Body</h2>\n<p>The request body must be sent as JSON.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>action_status</code></td>\n<td>String</td>\n<td>Yes</td>\n<td>The name of the status to change this action to.</td>\n</tr>\n<tr>\n<td><code>completed_by</code></td>\n<td>String</td>\n<td>No</td>\n<td>The email of the user that completed the action.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response\">Response</h2>\n<p>Returns a <code>200 OK</code> on success.</p>\n<h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p>Use the corresponding library endpoint to retrieve all valid values:</p>\n<ul>\n<li><p>Users: <code>GET library/users</code></p>\n</li>\n<li><p>Action Statuses: <code>GET library/action-statuses</code></p>\n</li>\n</ul>\n</li>\n</ul>\n","urlObject":{"path":["{{action_id}}","change-status"],"host":["{{public_api_v2_domain}}action"],"query":[],"variable":[]}},"response":[],"_postman_id":"ed1d378c-30f7-44aa-8065-69754af27e78"},{"name":"Remove Flag","id":"9f654d62-ccd3-4d44-a06d-48985dae6d8b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n    \"flag_name\": \"Capped Meter\"\n}","options":{"raw":{"language":"json"}}},"url":"{{public_api_v2_domain}}action/{{action_id}}/flag","description":"<p>Removes a flag from a specific Action</p>\n<h2 id=\"path-variables\">Path Variables</h2>\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>action_id</code></td>\n<td>The unique identifier of the Action to flag.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"request-body\">Request Body</h2>\n<p>The request body must be sent as JSON.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>flag_name</code></td>\n<td>String</td>\n<td>Yes</td>\n<td>The name of the flag to remove from the Action (e.g. <code>\"Capped Meter\"</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response\">Response</h2>\n<p>Returns a <code>200 OK</code> on success.</p>\n<h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p><strong>Flags:</strong> Use the library endpoint to retrieve all valid values for <code>flag_name</code>:</p>\n<ul>\n<li><code>GET library/flags</code></li>\n</ul>\n</li>\n</ul>\n","urlObject":{"path":["{{action_id}}","flag"],"host":["{{public_api_v2_domain}}action"],"query":[],"variable":[]}},"response":[],"_postman_id":"9f654d62-ccd3-4d44-a06d-48985dae6d8b"}],"id":"0ee146c2-5b1e-4576-8c0c-3bbdf52ea89d","_postman_id":"0ee146c2-5b1e-4576-8c0c-3bbdf52ea89d","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{public_api_v2_token}}"}]},"isInherited":true,"source":{"_postman_id":"bd46f7ec-2f39-4add-9eff-160cb4bda033","id":"bd46f7ec-2f39-4add-9eff-160cb4bda033","name":"True Compliance Public API v2","type":"collection"}}},{"name":"Asset","item":[{"name":"Get Assets","event":[{"listen":"test","script":{"id":"9a87a552-0af4-4f09-aec3-cf1c5a4e17f9","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"5dc1d230-af24-4ada-9ff0-f6b7a755ae02","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{public_api_v2_domain}}asset","description":"<p>Retrieves a paginated list of assets. Use the query parameters below to filter and paginate the results.</p>\n<h2 id=\"query-parameters\">Query Parameters</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>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>limit</code></td>\n<td>number</td>\n<td>Optional</td>\n<td>Number of results to return per page. Example: <code>5</code></td>\n</tr>\n<tr>\n<td><code>page</code></td>\n<td>number</td>\n<td>Optional</td>\n<td>Page number for pagination. Example: <code>1</code></td>\n</tr>\n<tr>\n<td><code>property_id</code></td>\n<td>string / number</td>\n<td>Optional</td>\n<td>Filter assets by property ID.</td>\n</tr>\n<tr>\n<td><code>certificate_id</code></td>\n<td>string / number</td>\n<td>Optional</td>\n<td>Filter assets by certificate ID.</td>\n</tr>\n<tr>\n<td><code>asset_type</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>Comma-separated list of asset types. Available values can be retrieved via <code>GET library/asset-types</code>. Example: <code>Smoke Alarm</code></td>\n</tr>\n<tr>\n<td><code>uprn</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>Filter by UPRN (Unique Property Reference Number). Example: <code>B9999999</code></td>\n</tr>\n<tr>\n<td><code>fault_status</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>Comma-separated list of fault statuses. Available values can be retrieved via <code>GET library/fault-statuses</code>. Example: <code>Dismissed,To Review</code></td>\n</tr>\n<tr>\n<td><code>compliant</code></td>\n<td>integer</td>\n<td>Optional</td>\n<td>Filter by compliance status. Must be <code>1</code> (true) or <code>0</code> (false).</td>\n</tr>\n<tr>\n<td><code>created_since</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>Return assets created on or after this date (<code>YYYY-MM-DD</code>). Example: <code>2020-01-01</code></td>\n</tr>\n<tr>\n<td><code>created_before</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>Return assets created before this date (<code>YYYY-MM-DD</code>). Example: <code>2025-01-01</code></td>\n</tr>\n<tr>\n<td><code>updated_since</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>Return assets updated on or after this date (<code>YYYY-MM-DD</code>). Example: <code>2020-01-01</code></td>\n</tr>\n<tr>\n<td><code>updated_before</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>Return assets updated before this date (<code>YYYY-MM-DD</code>). Example: <code>2025-01-01</code></td>\n</tr>\n<tr>\n<td><code>shallow</code></td>\n<td>boolean</td>\n<td>Optional</td>\n<td>If <code>false</code>, returns full asset details. Example: <code>false</code></td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p><strong>Comma-separated list parameters:</strong> <code>asset_type</code> and <code>fault_status</code> accept multiple values as a comma-separated string (e.g., <code>Open,Closed</code>). Use the corresponding library endpoints to retrieve all valid values:</p>\n<ul>\n<li><p>Asset types: <code>GET library/asset-types</code></p>\n</li>\n<li><p>Fault statuses: <code>GET library/fault-statuses</code></p>\n</li>\n</ul>\n</li>\n<li><p><strong>Date filters</strong> (<code>created_before</code>, <code>created_since</code>, <code>updated_before</code>, <code>updated_since</code>) must follow the <code>YYYY-MM-DD</code> format.</p>\n</li>\n</ul>\n","urlObject":{"host":["{{public_api_v2_domain}}asset"],"query":[{"disabled":true,"key":"limit","value":"5"},{"disabled":true,"key":"page","value":"1"},{"disabled":true,"key":"property_id","value":""},{"disabled":true,"key":"certificate_id","value":""},{"disabled":true,"description":{"content":"<p>Comma separated list of asset types. You can find these by calling GET library/asset-types</p>\n","type":"text/plain"},"key":"asset_type","value":"Smoke Alarm"},{"disabled":true,"key":"uprn","value":"B9999999"},{"disabled":true,"description":{"content":"<p>Comma separated list of fault statuses. You can find these by calling GET library/fault-statuses</p>\n","type":"text/plain"},"key":"fault_status","value":"Dismissed,To Review"},{"disabled":true,"description":{"content":"<p>Must be 1 or 0 for true or false</p>\n","type":"text/plain"},"key":"compliant","value":"1"},{"disabled":true,"key":"created_since","value":"2020-01-01"},{"disabled":true,"key":"created_before","value":"2025-01-01"},{"disabled":true,"key":"updated_since","value":"2020-01-01"},{"disabled":true,"key":"updated_before","value":"2025-01-01"},{"disabled":true,"key":"shallow","value":"false"}],"variable":[]}},"response":[{"id":"9dd42a0a-e042-4984-be42-5766925cf5c2","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{public_api_v2_domain}}asset","host":["{{public_api_v2_domain}}asset"],"query":[{"key":"limit","value":"5","disabled":true},{"key":"page","value":"1","disabled":true},{"key":"property_id","value":"","type":"text","disabled":true},{"key":"certificate_id","value":"","disabled":true},{"key":"asset_type","value":"Smoke Alarm","description":"Comma separated list of asset types. You can find these by calling GET library/asset-types","disabled":true},{"key":"uprn","value":"B9999999","disabled":true},{"key":"fault_status","value":"Dismissed,To Review","description":"Comma separated list of fault statuses. You can find these by calling GET library/fault-statuses","disabled":true},{"key":"compliant","value":"1","description":"Must be 1 or 0 for true or false","disabled":true},{"key":"created_since","value":"2020-01-01","type":"text","disabled":true},{"key":"created_before","value":"2025-01-01","type":"text","disabled":true},{"key":"updated_since","value":"2020-01-01","type":"text","disabled":true},{"key":"updated_before","value":"2025-01-01","type":"text","disabled":true},{"key":"shallow","value":"false","type":"text","disabled":true}]}},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"id\": 123456,\n            \"asset_type\": \"Smoke Alarm\",\n            \"property_id\": 123456,\n            \"compliant\": false,\n            \"faults\": [\n                {\n                    \"fault_id\": 123456,\n                    \"message\": \"Appliance has not been marked safe to use.\",\n                    \"corrective_action\": \"Fix appliance\",\n                    \"fault_status\": \"Rejected\",\n                    \"from_inspection_id\": 123456,\n                    \"superceded\": 1,\n                    \"created_at\": null,\n                    \"updated_at\": \"2022-07-08 01:17:13\"\n                }\n            ],\n            \"created_at\": \"2018-04-11 11:08:32\",\n            \"updated_at\": \"2018-04-11 11:08:34\",\n            \"notes\": []\n        },\n        {\n            \"id\": 123457,\n            \"asset_type\": \"Gas Cooker\",\n            \"property_id\": 123457,\n            \"compliant\": false,\n            \"faults\": [\n                {\n                    \"fault_id\": 123457,\n                    \"message\": \"Safety Device Correct Operation field is not marked as Yes or Pass\",\n                    \"corrective_action\": \"\",\n                    \"fault_status\": \"Rejected\",\n                    \"from_inspection_id\": 123457,\n                    \"superceded\": 1,\n                    \"created_at\": \"2021-11-17 01:19:21\",\n                    \"updated_at\": \"2021-11-17 01:19:21\"\n                }\n            ],\n            \"created_at\": \"2018-04-01 09:04:13\",\n            \"updated_at\": \"2018-04-01 09:04:14\",\n            \"notes\": []\n        }\n    ],\n    \"links\": {\n        \"first\": \"https://{{api-domain}}/api/v2/asset?page=1\",\n        \"last\": null,\n        \"prev\": null,\n        \"next\": \"https://{{api-domain}}/api/v2/asset?page=2\"\n    },\n    \"meta\": {\n        \"current_page\": 1,\n        \"current_page_url\": \"https://{{api-domain}}/api/v2/asset?page=1\",\n        \"from\": 1,\n        \"path\": \"https://{{api-domain}}/api/v2/asset\",\n        \"per_page\": \"2\",\n        \"to\": 2\n    }\n}"}],"_postman_id":"5dc1d230-af24-4ada-9ff0-f6b7a755ae02"},{"name":"Get Asset","event":[{"listen":"test","script":{"id":"25d6b23a-5a83-4cf0-9a53-09805fb0070d","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"6329d6af-21cb-4304-9bf6-b9628465a54c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{public_api_v2_domain}}asset/{{asset_id}}","description":"<p>Retrieves a single asset by its ID.</p>\n<h2 id=\"path-variables\">Path Variables</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Variable</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>asset_id</code></td>\n<td>number</td>\n<td>Required</td>\n<td>The unique ID of the asset to retrieve.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"query-parameters\">Query Parameters</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>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>shallow</code></td>\n<td>boolean</td>\n<td>Optional</td>\n<td>If <code>false</code>, returns full asset details including faults. Example: <code>false</code></td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response\">Response</h2>\n<p>Returns a single asset object under the <code>data</code> key, including:</p>\n<ul>\n<li><code>id</code> — Unique identifier of the asset.</li>\n<li><code>asset_type</code> — The type of asset (e.g. <code>Smoke Alarm</code>).</li>\n<li><code>property_id</code> — The ID of the property the asset belongs to.</li>\n<li><code>compliant</code> — Whether the asset is currently compliant (<code>true</code> or <code>false</code>).</li>\n<li><code>faults</code> — A list of faults associated with the asset, each containing:<ul>\n<li><code>fault_id</code> — Unique identifier of the fault.</li>\n<li><code>message</code> — Description of the fault.</li>\n<li><code>corrective_action</code> — Recommended action to resolve the fault.</li>\n<li><code>fault_status</code> — Current status of the fault.</li>\n<li><code>from_inspection_id</code> — The inspection that raised the fault.</li>\n<li><code>superceded</code> — Whether the fault has been superseded.</li>\n<li><code>created_at</code> — Timestamp when the fault was created.</li>\n</ul>\n</li>\n</ul>\n","urlObject":{"path":["{{asset_id}}"],"host":["{{public_api_v2_domain}}asset"],"query":[{"disabled":true,"key":"shallow","value":"false"}],"variable":[]}},"response":[{"id":"decb8f34-03ee-4595-8702-6e159e6e9e08","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{public_api_v2_domain}}asset/{{asset_id}}","host":["{{public_api_v2_domain}}asset"],"path":["{{asset_id}}"],"query":[{"key":"shallow","value":"false","disabled":true}]}},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 123456,\n        \"asset_type\": \"Smoke Alarm\",\n        \"property_id\": 123456,\n        \"compliant\": false,\n        \"faults\": [\n            {\n                \"fault_id\": 123456,\n                \"message\": \"Appliance has not been marked safe to use.\",\n                \"corrective_action\": \"Fix appliance\",\n                \"fault_status\": \"Rejected\",\n                \"from_inspection_id\": 123456,\n                \"superceded\": 1,\n                \"created_at\": null,\n                \"updated_at\": \"2022-07-08 01:17:13\"\n            }\n        ],\n        \"created_at\": \"2018-04-11 11:08:32\",\n        \"updated_at\": \"2018-04-11 11:08:34\",\n        \"notes\": []\n    }\n}"}],"_postman_id":"6329d6af-21cb-4304-9bf6-b9628465a54c"}],"id":"5e3cdcab-612f-4081-af5c-2bdfa03a8c56","_postman_id":"5e3cdcab-612f-4081-af5c-2bdfa03a8c56","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{public_api_v2_token}}"}]},"isInherited":true,"source":{"_postman_id":"bd46f7ec-2f39-4add-9eff-160cb4bda033","id":"bd46f7ec-2f39-4add-9eff-160cb4bda033","name":"True Compliance Public API v2","type":"collection"}}},{"name":"Certificate","item":[{"name":"Get Certificates","event":[{"listen":"test","script":{"id":"36f672dd-5553-4d91-9ff7-69c87f30e664","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"eae79171-fa7a-48c0-b986-d8dc7e3133b8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{public_api_v2_domain}}certificate","description":"<p>Retrieves a paginated list of certificates. Use the optional parameters to filter and paginate results.</p>\n<hr />\n<h2 id=\"query-parameters\">Query Parameters</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>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>limit</code></td>\n<td>number</td>\n<td>Optional</td>\n<td>Number of results to return per page. Example: <code>10</code></td>\n</tr>\n<tr>\n<td><code>page</code></td>\n<td>number</td>\n<td>Optional</td>\n<td>Page number for pagination. Example: <code>1</code></td>\n</tr>\n<tr>\n<td><code>certificate_instance</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>Comma-separated list of certificate instances. You can find these by calling <code>GET library/certificate-instances</code>.</td>\n</tr>\n<tr>\n<td><code>compliance_stream</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>Comma-separated list of compliance stream instances. You can find these by calling <code>GET library/compliance-streams</code>. Example: <code>Gas,Asbestos</code></td>\n</tr>\n<tr>\n<td><code>property_id</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>Filter certificates by a specific property ID.</td>\n</tr>\n<tr>\n<td><code>search</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>Text search across instance, property address, contractor, compliance stream, or filename.</td>\n</tr>\n<tr>\n<td><code>uprn</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>Filter certificates by UPRN (Unique Property Reference Number).</td>\n</tr>\n<tr>\n<td><code>created_since</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>Return certificates created on or after this date.</td>\n</tr>\n<tr>\n<td><code>created_before</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>Return certificates created on or before this date.</td>\n</tr>\n<tr>\n<td><code>updated_since</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>Return certificates updated on or after this date.</td>\n</tr>\n<tr>\n<td><code>updated_before</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>Return certificates updated on or before this date.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response\">Response</h2>\n<p>Returns a paginated list of certificates.</p>\n","urlObject":{"host":["{{public_api_v2_domain}}certificate"],"query":[{"disabled":true,"key":"limit","value":"10"},{"disabled":true,"key":"page","value":"1"},{"disabled":true,"description":{"content":"<p>Comma separated list of certificate instances. You can find these by calling GET library/certificate-instances</p>\n","type":"text/plain"},"key":"certificate_instance","value":""},{"disabled":true,"description":{"content":"<p>Comma separated list of complliance streams instances. You can find these by calling GET library/compliance-streams</p>\n","type":"text/plain"},"key":"compliance_stream","value":"Gas,Asbestos"},{"disabled":true,"key":"property_id","value":""},{"disabled":true,"description":{"content":"<p>Text search for instance, property address, contractor, compliance stream or filename</p>\n","type":"text/plain"},"key":"search","value":""},{"disabled":true,"key":"uprn","value":""},{"disabled":true,"key":"created_since","value":""},{"disabled":true,"key":"created_before","value":""},{"disabled":true,"key":"updated_since","value":""},{"disabled":true,"key":"updated_before","value":""}],"variable":[]}},"response":[{"id":"817390c6-e7cb-4300-82ef-55fffa89838e","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{public_api_v2_domain}}certificate","host":["{{public_api_v2_domain}}certificate"],"query":[{"key":"limit","value":"10","disabled":true},{"key":"page","value":"1","disabled":true},{"key":"certificate_instance","value":"","description":"Comma separated list of certificate instances. You can find these by calling GET library/certificate-instances","disabled":true},{"key":"compliance_stream","value":"Gas,Asbestos","description":"Comma separated list of complliance streams instances. You can find these by calling GET library/compliance-streams","disabled":true},{"key":"property_id","value":"","type":"text","disabled":true},{"key":"search","value":"","description":"Text search for instance, property address, contractor, compliance stream or filename","disabled":true},{"key":"uprn","value":"","type":"text","disabled":true},{"key":"created_since","value":"","disabled":true},{"key":"created_before","value":"","disabled":true},{"key":"updated_since","value":"","disabled":true},{"key":"updated_before","value":"","disabled":true}]}},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"id\": 123456,\n            \"property_id\": 123456,\n            \"uprn\": \"B999999\",\n            \"certificate_instance\": \"Generic EICR\",\n            \"certificate_type\": \"EICR\",\n            \"compliance_stream\": \"Electrical\",\n            \"contractor\": \"Various\",\n            \"values\": {\n                \"Contractor Name\": \"Test Contractor\",\n                \"Certificate Number\": \"DOMEICR/999999999\",\n                \"Issue Date\": \"2019-05-31\",\n                \"Certificate Title\": \"Domestic Electrical Installation Condition Report\",\n                \"Status\": \"satisfactory\",\n                \"Purpose Of Report\": \"To assess compliance with BS 7671.\",\n                \"Next Inspection\": \"5 Years\",\n                \"Age Of Installation\": \"20\",\n                \"Engineer Name\": \"Test Engineer\",\n                \"Signed By Contractor\": \"1\",\n                \"Engineer ID\": \"9999999999\",\n                \"Signed Supervisor\": \"1\"\n            },\n            \"faults\": [],\n            \"created_at\": \"2020-08-30 13:56:10\",\n            \"updated_at\": \"2024-06-01 01:00:48\"\n        },\n        {\n            \"id\": 123457,\n            \"property_id\": 123457,\n            \"uprn\": \"9999999991\",\n            \"certificate_instance\": \"Electrical Bulk Upload\",\n            \"certificate_type\": \"EICR\",\n            \"compliance_stream\": \"Electrical\",\n            \"contractor\": \"Various\",\n            \"values\": {\n                \"Certificate Number\": \"Load_1711\",\n                \"Status\": \"Satisfactory\",\n                \"Signed By Contractor\": \"1\",\n                \"Signed Supervisor\": \"1\"\n            },\n            \"faults\": [],\n            \"created_at\": \"2020-11-13 16:12:25\",\n            \"updated_at\": \"2024-06-01 01:00:48\"\n        }\n    ],\n    \"links\": {\n        \"first\": \"https://{{api-domain}}/api/v2/certificate?page=1\",\n        \"last\": null,\n        \"prev\": null,\n        \"next\": \"https://{{api-domain}}/api/v2/certificate?page=2\"\n    },\n    \"meta\": {\n        \"current_page\": 1,\n        \"current_page_url\": \"https://{{api-domain}}/api/v2/certificate?page=1\",\n        \"from\": 1,\n        \"path\": \"https://{{api-domain}}/api/v2/certificate\",\n        \"per_page\": \"2\",\n        \"to\": 2\n    }\n}"}],"_postman_id":"eae79171-fa7a-48c0-b986-d8dc7e3133b8"},{"name":"Get Certificate","event":[{"listen":"test","script":{"id":"7fa05d5a-81b4-410b-a4b8-ae3d87e5ebd3","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"756c2c6a-6609-40f3-8779-6e084af1cd9d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{public_api_v2_domain}}certificate/{{certificate_id}}","description":"<p>Retrieves a single certificate by its ID.</p>\n<hr />\n<h2 id=\"path-variables\">Path Variables</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Variable</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>certificate_id</code></td>\n<td>string</td>\n<td>Required</td>\n<td>The unique identifier of the certificate to retrieve.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"query-parameters\">Query Parameters</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>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>shallow</code></td>\n<td>boolean</td>\n<td>Optional</td>\n<td>When <code>true</code>, returns a reduced set of fields. Defaults to <code>false</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response\">Response</h2>\n<p>Returns the full details of the specified certificate.</p>\n","urlObject":{"path":["{{certificate_id}}"],"host":["{{public_api_v2_domain}}certificate"],"query":[{"disabled":true,"key":"shallow","value":"false"}],"variable":[]}},"response":[{"id":"f517985f-976f-4bc7-a22c-63bdcd6bda62","name":"Get Certificate","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{public_api_v2_domain}}certificate/{{certificate_id}}","host":["{{public_api_v2_domain}}certificate"],"path":["{{certificate_id}}"],"query":[{"key":"shallow","value":"false","disabled":true}]}},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 123456,\n        \"property_id\": 123456,\n        \"uprn\": \"B999999\",\n        \"certificate_instance\": \"Generic EICR\",\n        \"certificate_type\": \"EICR\",\n        \"compliance_stream\": \"Electrical\",\n        \"contractor\": \"Various\",\n        \"values\": {\n            \"Contractor Name\": \"Test Contractor\",\n            \"Certificate Number\": \"DOMEICR/999999999\",\n            \"Issue Date\": \"2019-05-31\",\n            \"Certificate Title\": \"Domestic Electrical Installation Condition Report\",\n            \"Status\": \"satisfactory\",\n            \"Purpose Of Report\": \"To assess compliance with BS 7671.\",\n            \"Next Inspection\": \"5 Years\",\n            \"Age Of Installation\": \"20\",\n            \"Engineer Name\": \"Test Engineer\",\n            \"Signed By Contractor\": \"1\",\n            \"Engineer ID\": \"9999999999\",\n            \"Signed Supervisor\": \"1\"\n        },\n        \"faults\": [],\n        \"created_at\": \"2020-08-30 13:56:10\",\n        \"updated_at\": \"2024-06-01 01:00:48\"\n    }\n}"}],"_postman_id":"756c2c6a-6609-40f3-8779-6e084af1cd9d"},{"name":"Add Flag","id":"f6bd5abc-2beb-412e-8f11-667398c609da","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"flag_name\": \"Capped Meter\",\n    \"expiry_date\": \"2027-03-02\"\n}","options":{"raw":{"language":"json"}}},"url":"{{public_api_v2_domain}}certificate/{{certificate_id}}/flag","description":"<p>Adds a flag to a specific Certificate, allowing you to mark it with a named flag and an optional expiry date.</p>\n<h2 id=\"path-variables\">Path Variables</h2>\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>certificate_id</code></td>\n<td>The unique identifier of the Certificate to flag.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"request-body\">Request Body</h2>\n<p>The request body must be sent as JSON.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>flag_name</code></td>\n<td>String</td>\n<td>Yes</td>\n<td>The name of the flag to apply to the Certificate (e.g. <code>\"Capped Meter\"</code>).</td>\n</tr>\n<tr>\n<td><code>expiry_date</code></td>\n<td>String (date)</td>\n<td>No</td>\n<td>The date on which the flag expires, in <code>YYYY-MM-DD</code> format (e.g. <code>\"2026-03-02\"</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response\">Response</h2>\n<p>Returns a <code>200 OK</code> on success.</p>\n<h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p><strong>Flags:</strong> Use the library endpoint to retrieve all valid values for <code>flag_name</code>:</p>\n<ul>\n<li><code>GET library/flags</code></li>\n</ul>\n</li>\n</ul>\n","urlObject":{"path":["{{certificate_id}}","flag"],"host":["{{public_api_v2_domain}}certificate"],"query":[],"variable":[]}},"response":[],"_postman_id":"f6bd5abc-2beb-412e-8f11-667398c609da"},{"name":"Remove Flag","id":"4288c8ea-854a-400a-90ee-787a0ccb5752","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n    \"flag_name\": \"Capped Meter\"\n}","options":{"raw":{"language":"json"}}},"url":"{{public_api_v2_domain}}action/{{action_id}}/flag","description":"<p>Removes a flag from a specific Certificate</p>\n<h2 id=\"path-variables\">Path Variables</h2>\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>certificate_id</code></td>\n<td>The unique identifier of the Certificate to flag.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"request-body\">Request Body</h2>\n<p>The request body must be sent as JSON.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>flag_name</code></td>\n<td>String</td>\n<td>Yes</td>\n<td>The name of the flag to remove from the Certificate (e.g. <code>\"Capped Meter\"</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response\">Response</h2>\n<p>Returns a <code>200 OK</code> on success.</p>\n<h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p><strong>Flags:</strong> Use the library endpoint to retrieve all valid values for <code>flag_name</code>:</p>\n<ul>\n<li><code>GET library/flags</code></li>\n</ul>\n</li>\n</ul>\n","urlObject":{"path":["{{action_id}}","flag"],"host":["{{public_api_v2_domain}}action"],"query":[],"variable":[]}},"response":[],"_postman_id":"4288c8ea-854a-400a-90ee-787a0ccb5752"}],"id":"8f535831-3a2b-4783-91ea-649952fae9d7","_postman_id":"8f535831-3a2b-4783-91ea-649952fae9d7","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{public_api_v2_token}}"}]},"isInherited":true,"source":{"_postman_id":"bd46f7ec-2f39-4add-9eff-160cb4bda033","id":"bd46f7ec-2f39-4add-9eff-160cb4bda033","name":"True Compliance Public API v2","type":"collection"}}},{"name":"Document","item":[{"name":"Get Documents","event":[{"listen":"test","script":{"id":"211f67d9-b646-47e5-a9b8-129f37751fc7","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"d2dce7c1-1a04-43b9-a642-3ae535674c9e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{public_api_v2_domain}}document","description":"<p>Retrieves a paginated list of documents available to the authenticated user.</p>\n<h2 id=\"overview\">Overview</h2>\n<p>Use this endpoint to fetch documents associated with your account. Results are paginated and can be filtered by certificate instance, document status, and date ranges for creation or last update.</p>\n<p><strong>Method:</strong> <code>GET</code><br /><strong>Endpoint:</strong> <code>{{public_api_v2_domain}}document</code></p>\n<h2 id=\"authentication\">Authentication</h2>\n<p>This endpoint requires a valid authenticated session. Ensure your request includes the appropriate authentication credentials (e.g. Bearer token or API key) as required by the API.</p>\n<h2 id=\"query-parameters\">Query Parameters</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>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>No</td>\n<td>Number of results to return per page. Default: <code>10</code>.</td>\n</tr>\n<tr>\n<td><code>page</code></td>\n<td>integer</td>\n<td>No</td>\n<td>Page number for pagination. Default: <code>1</code>.</td>\n</tr>\n<tr>\n<td><code>certificate_instance</code></td>\n<td>string</td>\n<td>No</td>\n<td>Comma-separated list of certificate instance identifiers to filter by. Retrieve valid values from <code>GET library/certificate-instances</code>.</td>\n</tr>\n<tr>\n<td><code>document_status</code></td>\n<td>string</td>\n<td>No</td>\n<td>Comma-separated list of document statuses to filter by. Retrieve valid values from <code>GET library/document-statuses</code>.</td>\n</tr>\n<tr>\n<td><code>created_since</code></td>\n<td>string</td>\n<td>No</td>\n<td>Return documents created on or after this date. Format: <code>YYYY-MM-DD</code>.</td>\n</tr>\n<tr>\n<td><code>created_before</code></td>\n<td>string</td>\n<td>No</td>\n<td>Return documents created on or before this date. Format: <code>YYYY-MM-DD</code>.</td>\n</tr>\n<tr>\n<td><code>updated_since</code></td>\n<td>string</td>\n<td>No</td>\n<td>Return documents updated on or after this date. Format: <code>YYYY-MM-DD</code>.</td>\n</tr>\n<tr>\n<td><code>updated_before</code></td>\n<td>string</td>\n<td>No</td>\n<td>Return documents updated on or before this date. Format: <code>YYYY-MM-DD</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response\">Response</h2>\n<h3 id=\"200-ok\">200 OK</h3>\n<p>A successful request returns a <code>200 OK</code> status with a JSON body containing a paginated list of documents matching the specified filters.</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>Status Code</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>400 Bad Request</code></td>\n<td>One or more query parameters are invalid.</td>\n</tr>\n<tr>\n<td><code>401 Unauthorized</code></td>\n<td>Authentication credentials are missing or invalid.</td>\n</tr>\n<tr>\n<td><code>403 Forbidden</code></td>\n<td>The authenticated user does not have permission to access this resource.</td>\n</tr>\n<tr>\n<td><code>500 Internal Server Error</code></td>\n<td>An unexpected error occurred on the server.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"notes\">Notes</h2>\n<ul>\n<li>All date parameters (<code>created_since</code>, <code>created_before</code>, <code>updated_since</code>, <code>updated_before</code>) must follow the <code>YYYY-MM-DD</code> format.</li>\n<li>The <code>certificate_instance</code> and <code>document_status</code> parameters accept comma-separated values, allowing you to filter by multiple values in a single request.</li>\n<li>Use the <code>limit</code> and <code>page</code> parameters together to paginate through large result sets.</li>\n</ul>\n","urlObject":{"host":["{{public_api_v2_domain}}document"],"query":[{"disabled":true,"key":"limit","value":"10"},{"disabled":true,"key":"page","value":"1"},{"disabled":true,"description":{"content":"<p>Comma separated list of certificate instances. You can find these by calling GET library/certificate-instances</p>\n","type":"text/plain"},"key":"certificate_instance","value":""},{"disabled":true,"description":{"content":"<p>Comma separated list of document statuses You can find these by calling GET library/document-statuses</p>\n","type":"text/plain"},"key":"document_status","value":""},{"disabled":true,"description":{"content":"<p>YYYY-MM-DD</p>\n","type":"text/plain"},"key":"created_since","value":""},{"disabled":true,"description":{"content":"<p>YYYY-MM-DD</p>\n","type":"text/plain"},"key":"created_before","value":""},{"disabled":true,"description":{"content":"<p>YYYY-MM-DD</p>\n","type":"text/plain"},"key":"updated_since","value":""},{"disabled":true,"description":{"content":"<p>YYYY-MM-DD</p>\n","type":"text/plain"},"key":"updated_before","value":""}],"variable":[]}},"response":[{"id":"b4291d37-e64d-4a04-8772-5bf89351f0ec","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{public_api_v2_domain}}document","host":["{{public_api_v2_domain}}document"],"query":[{"key":"limit","value":"10","disabled":true},{"key":"page","value":"1","disabled":true},{"key":"certificate_instance","value":"","description":"Comma separated list of certificate instances. You can find these by calling GET library/certificate-instances","disabled":true},{"key":"document_status","value":"","description":"Comma separated list of document statuses You can find these by calling GET library/document-statuses","disabled":true},{"key":"created_since","value":"","description":"YYYY-MM-DD","disabled":true},{"key":"created_before","value":"","description":"YYYY-MM-DD","disabled":true},{"key":"updated_since","value":"","description":"YYYY-MM-DD","disabled":true},{"key":"updated_before","value":"","description":"YYYY-MM-DD","disabled":true}]}},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"id\": 123456,\n            \"certificate_instance\": \"Test Instance\",\n            \"document_type\": \"UPLOADED\",\n            \"document_status\": \"LOADED_SUCCESSFULLY\",\n            \"filename\": \"my-test-file.pdf\",\n            \"storage_filename\": \"my-test-file-unique.pdf\",\n            \"loaded_by\": \"Ms Test User\",\n            \"loaded_on\": \"2019-02-19 18:34:19\",\n            \"created_at\": \"2019-02-19 18:34:19\",\n            \"updated_at\": \"2022-04-30 00:00:44\"\n        },\n        {\n            \"id\": 123457,\n            \"certificate_instance\": \"Test Instance\",\n            \"document_type\": \"UPLOADED\",\n            \"document_status\": \"LOADED_SUCCESSFULLY\",\n            \"filename\": \"test-lgsr.pdf\",\n            \"storage_filename\": \"test-lgsr-unique.pdf\",\n            \"loaded_by\": \"Ms Test User\",\n            \"loaded_on\": \"2019-12-16 06:01:17\",\n            \"created_at\": \"2019-12-16 06:01:17\",\n            \"updated_at\": \"2022-04-30 00:00:44\"\n        }\n    ],\n    \"links\": {\n        \"first\": \"https://{{api-domain}}/api/v2/document?page=1\",\n        \"last\": null,\n        \"prev\": null,\n        \"next\": \"https://{{api-domain}}/api/v2/document?page=2\"\n    },\n    \"meta\": {\n        \"current_page\": 1,\n        \"current_page_url\": \"https://{{api-domain}}/api/v2/document?page=1\",\n        \"from\": 1,\n        \"path\": \"https://{{api-domain}}/api/v2/document\",\n        \"per_page\": \"2\",\n        \"to\": 2\n    }\n}"}],"_postman_id":"d2dce7c1-1a04-43b9-a642-3ae535674c9e"},{"name":"Get Document","event":[{"listen":"test","script":{"id":"f0cb589c-1a94-4ea3-98d4-db022d78fbe0","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"e6ae5de8-a186-4e1b-a18d-91ae4118e2ad","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{public_api_v2_domain}}document/{{document_id}}","description":"<p>Retrieves a single document by its unique identifier.</p>\n<h2 id=\"path-variables\">Path Variables</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>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>document_id</code></td>\n<td>integer</td>\n<td>Yes</td>\n<td>The unique identifier of the document to retrieve.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"query-parameters\">Query Parameters</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>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>shallow</code></td>\n<td>boolean</td>\n<td>No</td>\n<td>When <code>true</code>, returns a reduced representation of the document. Default: <code>false</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"authentication\">Authentication</h2>\n<p>This endpoint requires a Bearer token. Pass your API key using the <code>{{api-key}}</code> variable.</p>\n<h2 id=\"response\">Response</h2>\n<p>Returns a document object on success.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>integer</td>\n<td>Unique identifier of the document.</td>\n</tr>\n<tr>\n<td><code>certificate_instance</code></td>\n<td>string</td>\n<td>The certificate instance the document belongs to.</td>\n</tr>\n<tr>\n<td><code>document_type</code></td>\n<td>string</td>\n<td>Type of the document (e.g. <code>UPLOADED</code>).</td>\n</tr>\n<tr>\n<td><code>document_status</code></td>\n<td>string</td>\n<td>Current status of the document (e.g. <code>LOADED_SUCCESSFULLY</code>).</td>\n</tr>\n<tr>\n<td><code>filename</code></td>\n<td>string</td>\n<td>Original filename of the document.</td>\n</tr>\n<tr>\n<td><code>storage_filename</code></td>\n<td>string</td>\n<td>Unique filename used in storage.</td>\n</tr>\n<tr>\n<td><code>loaded_by</code></td>\n<td>string</td>\n<td>Name of the user who loaded the document.</td>\n</tr>\n<tr>\n<td><code>loaded_on</code></td>\n<td>string</td>\n<td>Timestamp when the document was loaded (<code>YYYY-MM-DD HH:MM:SS</code>).</td>\n</tr>\n<tr>\n<td><code>created_at</code></td>\n<td>string</td>\n<td>Timestamp when the record was created (<code>YYYY-MM-DD HH:MM:SS</code>).</td>\n</tr>\n<tr>\n<td><code>updated_at</code></td>\n<td>string</td>\n<td>Timestamp when the record was last updated (<code>YYYY-MM-DD HH:MM:SS</code>).</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["{{document_id}}"],"host":["{{public_api_v2_domain}}document"],"query":[{"disabled":true,"key":"shallow","value":"false"}],"variable":[]}},"response":[{"id":"1ba65cb1-dfec-4ee2-a056-e8cd28cefbc8","name":"Get Document","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{public_api_v2_domain}}document/{{document_id}}","host":["{{public_api_v2_domain}}document"],"path":["{{document_id}}"],"query":[{"key":"shallow","value":"false","disabled":true}]}},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 123456,\n        \"certificate_instance\": \"Test Instance\",\n        \"document_type\": \"UPLOADED\",\n        \"document_status\": \"LOADED_SUCCESSFULLY\",\n        \"filename\": \"my-test-file.pdf\",\n        \"storage_filename\": \"my-test-file-unique.pdf\",\n        \"loaded_by\": \"Ms Test User\",\n        \"loaded_on\": \"2019-02-19 18:34:19\",\n        \"created_at\": \"2019-02-19 18:34:19\",\n        \"updated_at\": \"2022-04-30 00:00:44\"\n    }\n}"}],"_postman_id":"e6ae5de8-a186-4e1b-a18d-91ae4118e2ad"},{"name":"Get Document Download URL","event":[{"listen":"test","script":{"id":"e25b96c6-488a-4aec-bb14-a0b7f8f7f74c","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"af328435-d17d-401f-840a-56998ae38b78","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{public_api_v2_domain}}document/{{document_id}}/download-url","description":"<p>Retrieves a pre-signed download URL for a specific document by its unique identifier.</p>\n<h2 id=\"path-variables\">Path Variables</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>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>document_id</code></td>\n<td>integer</td>\n<td>Yes</td>\n<td>The unique identifier of the document to retrieve the download URL for.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"authentication\">Authentication</h2>\n<p>This endpoint requires a Bearer token. Pass your API key using the <code>{{api-key}}</code> variable.</p>\n<h2 id=\"response\">Response</h2>\n<p>Returns a download URL object on success.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>download_url</code></td>\n<td>string</td>\n<td>A pre-signed URL that can be used to download the document. The URL is time-limited and expires after a short period.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["{{document_id}}","download-url"],"host":["{{public_api_v2_domain}}document"],"query":[],"variable":[]}},"response":[{"id":"03b48b47-bb14-400b-a312-e17f0b270016","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":"{{public_api_v2_domain}}document/{{document_id}}/download-url"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"download_url\": \"{{download-url}}\"\n}"}],"_postman_id":"af328435-d17d-401f-840a-56998ae38b78"},{"name":"PDF","id":"05614f8c-0cf3-42ea-a592-9ba2a1ad101d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"key":"document","type":"file","uuid":"8fb27b65-c0ab-4d37-b4de-6717bbb83979","description":"<p>A PDF file</p>\n","value":null}]},"url":"{{public_api_v2_domain}}pdf","description":"<p>Uploads a PDF document to the system.</p>\n<h2 id=\"request-body\">Request Body</h2>\n<p>This endpoint accepts a <code>multipart/form-data</code> request body.</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>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>document</code></td>\n<td>file</td>\n<td>Yes</td>\n<td>The PDF file to upload. Max file size 1Mb. If you're file is larger, please use the <code>Fetch Upload URL</code> upload flow</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"authentication\">Authentication</h2>\n<p>This endpoint requires a Bearer token. Pass your API key using the <code>{{api-key}}</code> variable.</p>\n<h2 id=\"response\">Response</h2>\n<p>Returns the created document ID on success.</p>\n","urlObject":{"host":["{{public_api_v2_domain}}pdf"],"query":[],"variable":[]}},"response":[],"_postman_id":"05614f8c-0cf3-42ea-a592-9ba2a1ad101d"},{"name":"Fetch Upload URL","id":"f7a39b52-5e8c-4d96-aa80-ae2ebb67c778","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"filename\": \"example-certificate.pdf\"\n}","options":{"raw":{"language":"json"}}},"url":"{{public_api_v2_domain}}pdf/upload-url","description":"<p>Generates a pre-signed upload URL for uploading a PDF document to the system. We will create your document record, but then you must separately utilise the provided upload URL to pass the PDF to True Compliance. Use for files that exceed the 1Mb limit of <code>POST pdf</code></p>\n<h2 id=\"request-body\">Request Body</h2>\n<p>This endpoint accepts a <code>application/json</code> request body.</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>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>filename</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>The filename of the PDF document to be uploaded.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"authentication\">Authentication</h2>\n<p>This endpoint requires a Bearer token. Pass your API key using the <code>{{api-key}}</code> variable.</p>\n<h2 id=\"response\">Response</h2>\n<p>Returns a pre-signed upload URL and the new document ID on success.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>upload_url</code></td>\n<td>string</td>\n<td>The pre-signed URL to use for uploading the PDF file.</td>\n</tr>\n<tr>\n<td><code>document_id</code></td>\n<td>integer</td>\n<td>The unique identifier assigned to the new document.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["upload-url"],"host":["{{public_api_v2_domain}}pdf"],"query":[],"variable":[]}},"response":[{"id":"e8be9ae6-a5b8-4d43-9bb9-9806e61828c8","name":"200 OK","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"filename\": \"example-certificate.pdf\"\n}","options":{"raw":{"language":"json"}}},"url":"{{public_api_v2_domain}}pdf/upload-url"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"upload_url\": \"{{presiged-upload-url}}\",\n    \"document_id\": 123456\n}"}],"_postman_id":"f7a39b52-5e8c-4d96-aa80-ae2ebb67c778"}],"id":"5dd4b941-f4cf-4005-ba7b-f40421026cb8","_postman_id":"5dd4b941-f4cf-4005-ba7b-f40421026cb8","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{public_api_v2_token}}"}]},"isInherited":true,"source":{"_postman_id":"bd46f7ec-2f39-4add-9eff-160cb4bda033","id":"bd46f7ec-2f39-4add-9eff-160cb4bda033","name":"True Compliance Public API v2","type":"collection"}}},{"name":"Library","item":[{"name":"Get Action Statuses","event":[{"listen":"test","script":{"id":"89d311c1-b965-4929-8aec-811f071ea224","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"d72394b2-8abe-4aec-af2f-78ad3e9a7160","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{public_api_v2_domain}}library/action-statuses","description":"<p>Retrieves a list of action statuses from the library. Use the optional <code>search</code> parameter to filter results by a text string.</p>\n<p>This endpoint is useful for populating the <code>action_status</code> filter when calling <strong>Get Actions</strong>.</p>\n<hr />\n<h2 id=\"query-parameters\">Query Parameters</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>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>search</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>A text string to search for within action statuses.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response\">Response</h2>\n<p>Returns a list of action status values that can be used to filter actions via the <code>action_status</code> query parameter on the <strong>Get Actions</strong> endpoint.</p>\n","urlObject":{"path":["action-statuses"],"host":["{{public_api_v2_domain}}library"],"query":[{"disabled":true,"description":{"content":"<p>A text string to search for</p>\n","type":"text/plain"},"key":"search","value":""}],"variable":[]}},"response":[],"_postman_id":"d72394b2-8abe-4aec-af2f-78ad3e9a7160"},{"name":"Get Action Types","event":[{"listen":"test","script":{"id":"d99e135d-db38-4814-a4ef-a870abd48786","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"d489e428-0a42-4d48-a22b-f1f6c7eab512","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{public_api_v2_domain}}library/action-types","description":"<p>Retrieves a list of action types from the library. Use the optional <code>search</code> parameter to filter results by a text string.</p>\n<p>This endpoint is useful for populating the <code>action_type</code> filter when calling <strong>Get Actions</strong>.</p>\n<hr />\n<h2 id=\"query-parameters\">Query Parameters</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>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>search</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>A text string to search for within action types.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response\">Response</h2>\n<p>Returns a list of action type values that can be used to filter actions via the <code>action_type</code> query parameter on the <strong>Get Actions</strong> endpoint.</p>\n","urlObject":{"path":["action-types"],"host":["{{public_api_v2_domain}}library"],"query":[{"disabled":true,"description":{"content":"<p>A text string to search for</p>\n","type":"text/plain"},"key":"search","value":""}],"variable":[]}},"response":[],"_postman_id":"d489e428-0a42-4d48-a22b-f1f6c7eab512"},{"name":"Get Asset Types","event":[{"listen":"test","script":{"id":"4978cd48-2186-4c71-a4ff-a63e4663a9c4","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"e0925103-884c-4bf4-94cd-befc52e973b5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{public_api_v2_domain}}library/asset-types","description":"<p>Retrieves a paginated list of asset types from the library. Use the optional <code>search</code> parameter to filter results by a text string.</p>\n<hr />\n<h2 id=\"query-parameters\">Query Parameters</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>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>search</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>A text string to search for within asset types. Example: <code>gas</code></td>\n</tr>\n<tr>\n<td><code>page</code></td>\n<td>number</td>\n<td>Optional</td>\n<td>Page number for pagination. Example: <code>1</code></td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>number</td>\n<td>Optional</td>\n<td>Number of results to return per page. Example: <code>10</code></td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response\">Response</h2>\n<p>Returns a paginated list of asset type values.</p>\n","urlObject":{"path":["asset-types"],"host":["{{public_api_v2_domain}}library"],"query":[{"disabled":true,"description":{"content":"<p>A text string to search for</p>\n","type":"text/plain"},"key":"search","value":"gas"},{"disabled":true,"key":"page","value":"1"},{"disabled":true,"key":"limit","value":"10"}],"variable":[]}},"response":[],"_postman_id":"e0925103-884c-4bf4-94cd-befc52e973b5"},{"name":"Get Certificate Instances","event":[{"listen":"test","script":{"id":"9edfbc88-cb2a-41be-b07a-7b3457851626","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"27369b8c-bc98-4c2e-9165-50c007a6d92e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{public_api_v2_domain}}library/certificate-instances","description":"<p>Retrieves a paginated list of certificate instances from the library.</p>\n<hr />\n<h2 id=\"query-parameters\">Query Parameters</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>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>search</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>A text string to search for within asset types. Example: <code>gas</code></td>\n</tr>\n<tr>\n<td><code>page</code></td>\n<td>number</td>\n<td>Optional</td>\n<td>Page number for pagination. Example: <code>1</code></td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>number</td>\n<td>Optional</td>\n<td>Number of results to return per page. Example: <code>10</code></td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response\">Response</h2>\n<p>Returns a paginated list of certificate instances.</p>\n","urlObject":{"path":["certificate-instances"],"host":["{{public_api_v2_domain}}library"],"query":[{"disabled":true,"description":{"content":"<p>A text string to search for</p>\n","type":"text/plain"},"key":"search","value":null},{"disabled":true,"key":"page","value":"1"},{"disabled":true,"key":"limit","value":"10"}],"variable":[]}},"response":[],"_postman_id":"27369b8c-bc98-4c2e-9165-50c007a6d92e"},{"name":"Get Compliance Streams","event":[{"listen":"test","script":{"id":"c7ec304c-a8f9-4d76-bba5-57d4b79c2c98","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"7e2f95c3-2994-4b37-873e-de4555afeffb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{public_api_v2_domain}}library/compliance-streams","description":"<p>Retrieves a list of compliance streams from the library. Use the optional <code>search</code> parameter to filter results.</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>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>search</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>A text string to search for within asset types. Example: <code>gas</code></td>\n</tr>\n<tr>\n<td><code>page</code></td>\n<td>number</td>\n<td>Optional</td>\n<td>Page number for pagination. Example: <code>1</code></td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>number</td>\n<td>Optional</td>\n<td>Number of results to return per page. Example: <code>10</code></td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response\">Response</h2>\n<p>Returns a list of compliance stream values.</p>\n","urlObject":{"path":["compliance-streams"],"host":["{{public_api_v2_domain}}library"],"query":[{"disabled":true,"description":{"content":"<p>A text string to search for</p>\n","type":"text/plain"},"key":"search","value":""},{"disabled":true,"key":"page","value":"1"},{"disabled":true,"key":"limit","value":"10"}],"variable":[]}},"response":[],"_postman_id":"7e2f95c3-2994-4b37-873e-de4555afeffb"},{"name":"Get Document Statuses","event":[{"listen":"test","script":{"id":"f3b04e74-c156-460e-b827-8d600e4930f7","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"d39fd569-fc0f-4b4b-9635-d21746cbedd1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{public_api_v2_domain}}library/document-statuses","description":"<p>Retrieves a list of document statuses from the library. Use the optional <code>search</code> parameter to filter results by a text string.</p>\n<hr />\n<h2 id=\"query-parameters\">Query Parameters</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>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>search</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>A text string to search for within document statuses.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response\">Response</h2>\n<p>Returns a list of document status values.</p>\n","urlObject":{"path":["document-statuses"],"host":["{{public_api_v2_domain}}library"],"query":[{"disabled":true,"description":{"content":"<p>A text string to search for</p>\n","type":"text/plain"},"key":"search","value":""}],"variable":[]}},"response":[],"_postman_id":"d39fd569-fc0f-4b4b-9635-d21746cbedd1"},{"name":"Get Fault Statuses","event":[{"listen":"test","script":{"id":"d63a265c-e0aa-4506-ab28-e46cdff91a12","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"bc96b4fe-c9d3-40ba-95dd-2cb9b54c24fe","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{public_api_v2_domain}}library/fault-statuses?search=","description":"<p>Retrieves a list of fault statuses from the library. Use the optional <code>search</code> parameter to filter results by a text string.</p>\n<hr />\n<h2 id=\"query-parameters\">Query Parameters</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>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>search</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>A text string to search for within fault statuses.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response\">Response</h2>\n<p>Returns a list of fault status values.</p>\n","urlObject":{"path":["fault-statuses"],"host":["{{public_api_v2_domain}}library"],"query":[{"key":"search","value":""}],"variable":[]}},"response":[],"_postman_id":"bc96b4fe-c9d3-40ba-95dd-2cb9b54c24fe"},{"name":"Get Flags","event":[{"listen":"test","script":{"id":"4e1569cf-fd67-4f42-80ba-f58f3d9964d7","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"3d8a20aa-bc78-4fc0-8d85-20328afa9de1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{public_api_v2_domain}}library/flags","description":"<p>Retrieves a paginated list of flags from the library. Use the optional parameters to filter and paginate results.</p>\n<p>This endpoint is useful for populating the <code>flag_name</code> field when calling <strong>Add Flag</strong>.</p>\n<hr />\n<h2 id=\"query-parameters\">Query Parameters</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>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>search</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>A text string to search for within flag names. Example: <code>warning</code></td>\n</tr>\n<tr>\n<td><code>type</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>Filter flags by the entity type they apply to. Accepted values: <code>unit</code>, <code>certificate</code>, <code>action</code>.</td>\n</tr>\n<tr>\n<td><code>page</code></td>\n<td>number</td>\n<td>Optional</td>\n<td>Page number for pagination.</td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>number</td>\n<td>Optional</td>\n<td>Number of results to return per page.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response\">Response</h2>\n<p>Returns a paginated list of flag values that can be used when adding or removing flags on actions, certificates, or units.</p>\n","urlObject":{"path":["flags"],"host":["{{public_api_v2_domain}}library"],"query":[{"disabled":true,"description":{"content":"<p>A text string to search for</p>\n","type":"text/plain"},"key":"search","value":"warning"},{"disabled":true,"key":"page","value":"1"},{"disabled":true,"key":"limit","value":"10"},{"disabled":true,"description":{"content":"<p>unit,certificate or action</p>\n","type":"text/plain"},"key":"type","value":"unit"}],"variable":[]}},"response":[],"_postman_id":"3d8a20aa-bc78-4fc0-8d85-20328afa9de1"},{"name":"Get Material Types","event":[{"listen":"test","script":{"id":"e3f1c72c-7d26-4d91-ba3d-472254a7b7fe","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"03d2e068-7ba0-4717-b47a-9873baa3b930","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{public_api_v2_domain}}library/material-types","description":"<p>Retrieves a list of material types from the library. Use the optional <code>search</code> parameter to filter results by a text string.</p>\n<hr />\n<h2 id=\"query-parameters\">Query Parameters</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>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>search</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>A text string to search for within material types.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response\">Response</h2>\n<p>Returns a list of material type values.</p>\n","urlObject":{"path":["material-types"],"host":["{{public_api_v2_domain}}library"],"query":[{"disabled":true,"description":{"content":"<p>A text string to search for</p>\n","type":"text/plain"},"key":"search","value":""}],"variable":[]}},"response":[],"_postman_id":"03d2e068-7ba0-4717-b47a-9873baa3b930"},{"name":"Get Notification Types","event":[{"listen":"test","script":{"id":"09d925a3-a3bd-43ba-ac23-2073578a0b97","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"2c5889ab-9b92-4929-8fa7-06b79b473c2b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{public_api_v2_domain}}library/notification-types","description":"<p>Retrieves a list of notification types from the library. Use the optional <code>search</code> parameter to filter results by a text string.</p>\n<hr />\n<h2 id=\"query-parameters\">Query Parameters</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>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>search</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>A text string to search for within notification types.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response\">Response</h2>\n<p>Returns a list of notification type values.</p>\n","urlObject":{"path":["notification-types"],"host":["{{public_api_v2_domain}}library"],"query":[{"disabled":true,"description":{"content":"<p>A text string to search for</p>\n","type":"text/plain"},"key":"search","value":""}],"variable":[]}},"response":[],"_postman_id":"2c5889ab-9b92-4929-8fa7-06b79b473c2b"},{"name":"Get Property Types","event":[{"listen":"test","script":{"id":"3bf8899d-bc4c-4d3c-8417-48f0657d6893","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"309101be-80f8-4d0c-953c-a557af5e5cad","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{public_api_v2_domain}}library/property-types","description":"<p>Retrieves a list of property types from the library. Use the optional parameters to filter results.</p>\n<hr />\n<h2 id=\"query-parameters\">Query Parameters</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>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>search</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>A text string to search for within property types.</td>\n</tr>\n<tr>\n<td><code>in_use</code></td>\n<td>boolean (0 or 1)</td>\n<td>Optional</td>\n<td>When set to <code>1</code>, returns only property types that are currently in use. Example: <code>1</code></td>\n</tr>\n<tr>\n<td><code>page</code></td>\n<td>number</td>\n<td>Optional</td>\n<td>Page number for pagination. Example: <code>1</code></td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>number</td>\n<td>Optional</td>\n<td>Results per call. Example: <code>10</code></td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response\">Response</h2>\n<p>Returns a list of property type values.</p>\n","urlObject":{"path":["property-types"],"host":["{{public_api_v2_domain}}library"],"query":[{"disabled":true,"description":{"content":"<p>A text string to search for</p>\n","type":"text/plain"},"key":"search","value":""},{"disabled":true,"key":"in_use","value":"1"},{"disabled":true,"key":"page","value":"1"},{"disabled":true,"key":"limit","value":"10"}],"variable":[]}},"response":[],"_postman_id":"309101be-80f8-4d0c-953c-a557af5e5cad"},{"name":"Get Teams","event":[{"listen":"test","script":{"id":"dde01eba-982b-4589-bdab-fbf1d753d839","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"ac14825b-3ae2-4c25-91b8-5ecb251a9e3f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{public_api_v2_domain}}library/teams","description":"<p>Retrieves a paginated list of teams from the library. Use the optional parameters to filter and paginate results.</p>\n<hr />\n<h2 id=\"query-parameters\">Query Parameters</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>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>search</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>A text string to search for within team names. Example: <code>Clear</code></td>\n</tr>\n<tr>\n<td><code>page</code></td>\n<td>number</td>\n<td>Optional</td>\n<td>Page number for pagination.</td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>number</td>\n<td>Optional</td>\n<td>Number of results to return per page.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response\">Response</h2>\n<p>Returns a paginated list of teams.</p>\n","urlObject":{"path":["teams"],"host":["{{public_api_v2_domain}}library"],"query":[{"disabled":true,"description":{"content":"<p>A text string to search for</p>\n","type":"text/plain"},"key":"search","value":""},{"disabled":true,"key":"page","value":"1"},{"disabled":true,"key":"limit","value":"10"}],"variable":[]}},"response":[],"_postman_id":"ac14825b-3ae2-4c25-91b8-5ecb251a9e3f"},{"name":"Get Users","event":[{"listen":"test","script":{"id":"b7bdcc3a-39c2-444f-ba61-2e823efbf68f","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"7750db4c-28c6-408e-90a3-99cfc3a3c3fc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{public_api_v2_domain}}library/users","description":"<p>Retrieves a paginated list of users from the library. Use the optional parameters to filter and paginate results.</p>\n<hr />\n<h2 id=\"query-parameters\">Query Parameters</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>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>search</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>A text string to search for within user names or email addresses.</td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>number</td>\n<td>Optional</td>\n<td>Number of results to return per page. Example: <code>20</code></td>\n</tr>\n<tr>\n<td><code>page</code></td>\n<td>number</td>\n<td>Optional</td>\n<td>Page number for pagination. Example: <code>1</code></td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response\">Response</h2>\n<p>Returns a paginated list of users.</p>\n","urlObject":{"path":["users"],"host":["{{public_api_v2_domain}}library"],"query":[{"disabled":true,"description":{"content":"<p>A text string to search for</p>\n","type":"text/plain"},"key":"search","value":null},{"disabled":true,"key":"page","value":"1"},{"disabled":true,"key":"limit","value":"10"}],"variable":[]}},"response":[],"_postman_id":"7750db4c-28c6-408e-90a3-99cfc3a3c3fc"}],"id":"fbbd180c-1094-4d9c-b2c1-bc5c6fc796cd","_postman_id":"fbbd180c-1094-4d9c-b2c1-bc5c6fc796cd","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{public_api_v2_token}}"}]},"isInherited":true,"source":{"_postman_id":"bd46f7ec-2f39-4add-9eff-160cb4bda033","id":"bd46f7ec-2f39-4add-9eff-160cb4bda033","name":"True Compliance Public API v2","type":"collection"}}},{"name":"Material","item":[{"name":"Get Materials","event":[{"listen":"test","script":{"id":"9081e396-e864-47c6-86f3-aecd06e62eda","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"46d6fffe-13a2-4372-b9b2-5fd38de6b4e9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{public_api_v2_domain}}material","description":"<h2 id=\"get-materials\">Get Materials</h2>\n<p>Retrieves a paginated list of materials. Results can be filtered by compliance stream, material type, property, UPRN, and date ranges for creation or last update.</p>\n<p><strong>Endpoint:</strong> <code>GET {{public_api_v2_domain}}material</code></p>\n<p><strong>Authentication:</strong> Requires a valid API key passed via the <code>api-key</code> request header.</p>\n<hr />\n<h2 id=\"query-parameters\">Query Parameters</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>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>Optional</td>\n<td>Number of results to return per page.</td>\n</tr>\n<tr>\n<td><code>page</code></td>\n<td>integer</td>\n<td>Optional</td>\n<td>Page number for pagination.</td>\n</tr>\n<tr>\n<td><code>compliance_stream</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>Comma-separated list of compliance streams to filter by (e.g. <code>Asbestos</code>). See note below for valid values.</td>\n</tr>\n<tr>\n<td><code>material_type</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>Comma-separated list of material types to filter by (e.g. <code>Amosite,Crocidolite,Other</code>). See note below for valid values.</td>\n</tr>\n<tr>\n<td><code>property_id</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>Filter results by a specific property ID.</td>\n</tr>\n<tr>\n<td><code>uprn</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>Filter results by UPRN (Unique Property Reference Number).</td>\n</tr>\n<tr>\n<td><code>created_since</code></td>\n<td>string (date)</td>\n<td>Optional</td>\n<td>Return only materials created on or after this date.</td>\n</tr>\n<tr>\n<td><code>created_before</code></td>\n<td>string (date)</td>\n<td>Optional</td>\n<td>Return only materials created on or before this date.</td>\n</tr>\n<tr>\n<td><code>updated_since</code></td>\n<td>string (date)</td>\n<td>Optional</td>\n<td>Return only materials updated on or after this date.</td>\n</tr>\n<tr>\n<td><code>updated_before</code></td>\n<td>string (date)</td>\n<td>Optional</td>\n<td>Return only materials updated on or before this date.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p><strong>Compliance streams:</strong> Valid values for <code>compliance_stream</code> can be retrieved by calling <code>GET {{public_api_v2_domain}}library/compliance-streams</code>.</p>\n</li>\n<li><p><strong>Material types:</strong> Valid values for <code>material_type</code> can be retrieved by calling <code>GET {{public_api_v2_domain}}library/material-types</code>.</p>\n</li>\n<li><p><strong>Date filters:</strong> Date values should be provided as ISO 8601 formatted strings (e.g. <code>2024-01-31</code>). The <code>created_since</code>/<code>created_before</code> and <code>updated_since</code>/<code>updated_before</code> pairs can be used independently or together to define a date range.</p>\n</li>\n<li><p><strong>Pagination:</strong> Use <code>limit</code> and <code>page</code> together to paginate through large result sets.</p>\n</li>\n</ul>\n","urlObject":{"host":["{{public_api_v2_domain}}material"],"query":[{"disabled":true,"key":"limit","value":"10"},{"disabled":true,"key":"page","value":"1"},{"disabled":true,"description":{"content":"<p>Comma separated list of compliance streams. You can find these by calling GET library/compliance-streams</p>\n","type":"text/plain"},"key":"compliance_stream","value":"Asbestos"},{"disabled":true,"description":{"content":"<p>Comma separated list of material types. You can find these by calling GET library/material-types</p>\n","type":"text/plain"},"key":"material_type","value":"Amosite,Crocidolite,Other"},{"disabled":true,"key":"property_id","value":null},{"disabled":true,"key":"uprn","value":""},{"disabled":true,"key":"created_since","value":""},{"disabled":true,"key":"created_before","value":""},{"disabled":true,"key":"updated_since","value":""},{"disabled":true,"key":"updated_before","value":""}],"variable":[]}},"response":[{"id":"a9fc961b-1456-450f-b538-c71810404a69","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{public_api_v2_domain}}material","host":["{{public_api_v2_domain}}material"],"query":[{"key":"limit","value":"10","disabled":true},{"key":"page","value":"1","type":"text","disabled":true},{"key":"compliance_stream","value":"Asbestos","description":"Comma separated list of compliance streams. You can find these by calling GET library/compliance-streams","type":"text","disabled":true},{"key":"material_type","value":"Amosite,Crocidolite,Other","description":"Comma separated list of material types. You can find these by calling GET library/material-types","disabled":true},{"key":"property_id","value":null,"type":"text","disabled":true},{"key":"uprn","value":"","disabled":true},{"key":"created_since","value":"","type":"text","disabled":true},{"key":"created_before","value":"","type":"text","disabled":true},{"key":"updated_since","value":"","type":"text","disabled":true},{"key":"updated_before","value":"","type":"text","disabled":true}]}},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"id\": 123456,\n            \"material_number\": \"MAT-001\",\n            \"compliance_stream\": \"Asbestos\",\n            \"material_type\": \"Other\",\n            \"material_status\": \"ACTIVE\",\n            \"location\": \"Ground Floor / Cupboard\",\n            \"sitemap_coordinates\": null,\n            \"property_id\": 123456,\n            \"values\": {\n                \"data_point_key_1\": \"value_1\",\n                \"data_point_key_2\": \"value_2\",\n                \"data_point_key_3\": \"value_3\"\n            },\n            \"next_due_date\": \"2025-02-03\",\n            \"created_at\": \"2024-02-20 13:43:24\",\n            \"updated_at\": \"2026-02-05 09:18:05\"\n        },\n        {\n            \"id\": 123457,\n            \"material_number\": \"MAT-002\",\n            \"compliance_stream\": \"Asbestos\",\n            \"material_type\": \"Other\",\n            \"material_status\": \"ACTIVE\",\n            \"location\": \"Ground Floor / Cupboard\",\n            \"sitemap_coordinates\": null,\n            \"property_id\": 123457,\n            \"values\": {\n                \"data_point_key_1\": \"value_1\",\n                \"data_point_key_2\": \"value_2\",\n                \"data_point_key_3\": \"value_3\"\n            },\n            \"next_due_date\": \"2025-02-03\",\n            \"created_at\": \"2024-02-20 13:43:24\",\n            \"updated_at\": \"2026-02-05 09:18:05\"\n        }\n    ],\n    \"links\": {\n        \"first\": \"https://{{api-domain}}/api/v2/material?page=1\",\n        \"last\": null,\n        \"prev\": null,\n        \"next\": \"https://{{api-domain}}/api/v2/material?page=2\"\n    },\n    \"meta\": {\n        \"current_page\": 1,\n        \"current_page_url\": \"https://{{api-domain}}/api/v2/material?page=1\",\n        \"from\": 1,\n        \"path\": \"https://{{api-domain}}/api/v2/material\",\n        \"per_page\": \"1\",\n        \"to\": 1\n    }\n}"}],"_postman_id":"46d6fffe-13a2-4372-b9b2-5fd38de6b4e9"},{"name":"Get Material","event":[{"listen":"test","script":{"id":"f78128a7-f35d-43fa-8184-ede8fbf00d36","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"3cb12cb6-60aa-4150-94c2-3e54685b6a35","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{public_api_v2_domain}}material/{{material_id}}","description":"<h2 id=\"get-material\">Get Material</h2>\n<p>Retrieves a single material by its unique identifier.</p>\n<p><strong>Endpoint:</strong> <code>GET {{public_api_v2_domain}}material/{{material_id}}</code></p>\n<p><strong>Authentication:</strong> Requires a valid API key passed via the <code>api-key</code> request header.</p>\n<hr />\n<h2 id=\"path-variables\">Path Variables</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Variable</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>material_id</code></td>\n<td>string</td>\n<td>Required</td>\n<td>The unique identifier of the material to retrieve.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"query-parameters\">Query Parameters</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>Required</th>\n<th>Default</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>shallow</code></td>\n<td>boolean</td>\n<td>Optional</td>\n<td><code>false</code></td>\n<td>When <code>true</code>, returns a shallow response with no nested relationships.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"notes\">Notes</h2>\n<ul>\n<li>The <code>material_id</code> path variable must correspond to an existing material. If the material is not found, a <code>404</code> response will be returned.</li>\n<li>Set <code>shallow</code> to <code>true</code> to reduce response payload size by omitting nested relationship data.</li>\n</ul>\n","urlObject":{"path":["{{material_id}}"],"host":["{{public_api_v2_domain}}material"],"query":[{"disabled":true,"key":"shallow","value":"false"}],"variable":[]}},"response":[{"id":"b669f0a5-0fcc-4ba8-a99b-925aa8cf4172","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{public_api_v2_domain}}material/{{material_id}}?shallow=false","host":["{{public_api_v2_domain}}material"],"path":["{{material_id}}"],"query":[{"key":"shallow","value":"false"}]}},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 123456,\n        \"material_number\": \"MAT-001\",\n        \"compliance_stream\": \"Asbestos\",\n        \"material_type\": \"Other\",\n        \"material_status\": \"ACTIVE\",\n        \"location\": \"Ground Floor / Cupboard\",\n        \"sitemap_coordinates\": null,\n        \"property_id\": 123456,\n        \"values\": {\n            \"data_point_key_1\": \"value_1\",\n            \"data_point_key_2\": \"value_2\",\n            \"data_point_key_3\": \"value_3\"\n        },\n        \"next_due_date\": \"2025-02-03\",\n        \"created_at\": \"2024-02-20 13:43:24\",\n        \"updated_at\": \"2026-02-05 09:18:05\"\n    }\n}"}],"_postman_id":"3cb12cb6-60aa-4150-94c2-3e54685b6a35"},{"name":"Update Material","event":[{"listen":"test","script":{"id":"ebfa66f6-1dd2-4129-941a-7ff9d040ae84","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"9040bf8e-4be0-4096-8500-8b4c6f4e04ab","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n\t\"location\": \"Kitchen\",\n\t\"next_due_date\": \"2027-01-01\",\n\t\"sitemap_coordinates\": null,\n\t\"compliance_stream\": \"Asbestos\",\n\t\"material_status\": \"ACTIVE\"\n}","options":{"raw":{"language":"json"}}},"url":"{{public_api_v2_domain}}material/{{material_id}}","description":"<h2 id=\"update-material\">Update Material</h2>\n<p>Updates an existing material record by its unique identifier. Only the fields provided in the request body will be updated.</p>\n<p><strong>Endpoint:</strong> <code>PATCH {{public_api_v2_domain}}material/{{material_id}}</code></p>\n<p><strong>Authentication:</strong> Requires a valid API key passed via the <code>api-key</code> request header.</p>\n<hr />\n<h2 id=\"path-variables\">Path Variables</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Variable</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>material_id</code></td>\n<td>string</td>\n<td>Required</td>\n<td>The unique identifier of the material to update.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"request-body\">Request Body</h2>\n<p>The request body must be sent as JSON. All fields are optional — include only the fields you wish to update.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>location</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>The location of the material within the property (e.g. <code>\"Kitchen\"</code>).</td>\n</tr>\n<tr>\n<td><code>next_due_date</code></td>\n<td>string (date)</td>\n<td>Optional</td>\n<td>The next due date for the material, in <code>YYYY-MM-DD</code> format (e.g. <code>\"2027-01-01\"</code>).</td>\n</tr>\n<tr>\n<td><code>sitemap_coordinates</code></td>\n<td>object</td>\n<td>null</td>\n<td>Optional</td>\n</tr>\n<tr>\n<td><code>compliance_stream</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>The name of the compliance stream to associate with this material (e.g. <code>\"Asbestos\"</code>). See note below for valid values.</td>\n</tr>\n<tr>\n<td><code>material_status</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>The status of the material. Valid values are: <code>ACTIVE</code>  <br /><code>NOT_FOUND</code>  <br /><code>REMOVED</code></td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"response\">Response</h2>\n<p>Returns a <code>200 OK</code> on success.</p>\n<hr />\n<h2 id=\"notes\">Notes</h2>\n<ul>\n<li><strong>Compliance streams:</strong> Valid values for <code>compliance_stream</code> can be retrieved by calling <code>GET library/compliance-streams</code>.</li>\n</ul>\n","urlObject":{"path":["{{material_id}}"],"host":["{{public_api_v2_domain}}material"],"query":[],"variable":[]}},"response":[],"_postman_id":"9040bf8e-4be0-4096-8500-8b4c6f4e04ab"}],"id":"7053bd54-a92c-49df-8e8a-1cd7b0a7dc24","_postman_id":"7053bd54-a92c-49df-8e8a-1cd7b0a7dc24","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{public_api_v2_token}}"}]},"isInherited":true,"source":{"_postman_id":"bd46f7ec-2f39-4add-9eff-160cb4bda033","id":"bd46f7ec-2f39-4add-9eff-160cb4bda033","name":"True Compliance Public API v2","type":"collection"}}},{"name":"Notification","item":[{"name":"Get Notifications","event":[{"listen":"test","script":{"id":"deb748e9-91dc-4687-a27f-e173cf597965","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"69523302-bda8-4f44-9072-28eb3312c836","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{public_api_v2_domain}}notification","description":"<p>Retrieve a paginated list of notifications for the authenticated user or organisation.</p>\n<h2 id=\"authentication\">Authentication</h2>\n<p>This endpoint requires a Bearer token. Pass your API key using the <code>Authorization</code> header:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>Authorization: Bearer {{api-key}}\n</code></pre><h2 id=\"query-parameters\">Query Parameters</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>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>Optional</td>\n<td>The number of notifications to return per page. Defaults to <code>10</code>.</td>\n</tr>\n<tr>\n<td><code>page</code></td>\n<td>integer</td>\n<td>Optional</td>\n<td>The page number to retrieve for pagination. Defaults to <code>1</code>.</td>\n</tr>\n<tr>\n<td><code>notification_type</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>A comma-separated list of notification types to filter by. Available types can be retrieved via <code>GET library/notification-types</code>.</td>\n</tr>\n<tr>\n<td><code>created_since</code></td>\n<td>string (date)</td>\n<td>Optional</td>\n<td>Return only notifications created on or after this date.</td>\n</tr>\n<tr>\n<td><code>created_before</code></td>\n<td>string (date)</td>\n<td>Optional</td>\n<td>Return only notifications created on or before this date.</td>\n</tr>\n<tr>\n<td><code>updated_since</code></td>\n<td>string (date)</td>\n<td>Optional</td>\n<td>Return only notifications updated on or after this date.</td>\n</tr>\n<tr>\n<td><code>updated_before</code></td>\n<td>string (date)</td>\n<td>Optional</td>\n<td>Return only notifications updated on or before this date.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response\">Response</h2>\n<p>Returns a paginated list of notification objects matching the specified filters.</p>\n","urlObject":{"host":["{{public_api_v2_domain}}notification"],"query":[{"disabled":true,"key":"limit","value":"10"},{"disabled":true,"key":"page","value":"1"},{"disabled":true,"description":{"content":"<p>Comma separated list of notification types. You can find these by calling GET library/notification-types</p>\n","type":"text/plain"},"key":"notification_type","value":""},{"disabled":true,"key":"created_since","value":""},{"disabled":true,"key":"created_before","value":""},{"disabled":true,"key":"updated_since","value":""},{"disabled":true,"key":"updated_before","value":""}],"variable":[]}},"response":[{"id":"ecef740e-b38e-4095-9b18-da1b717b18bf","name":"Get Notifications","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{public_api_v2_domain}}notification","host":["{{public_api_v2_domain}}notification"],"query":[{"key":"limit","value":"10","disabled":true},{"key":"page","value":"1","disabled":true},{"key":"notification_type","value":"","description":"Comma separated list of notification types. You can find these by calling GET library/notification-types","disabled":true},{"key":"created_since","value":"","type":"text","disabled":true},{"key":"created_before","value":"","type":"text","disabled":true},{"key":"updated_since","value":"","type":"text","disabled":true},{"key":"updated_before","value":"","type":"text","disabled":true}]}},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"id\": 123456,\n            \"title\": \"Duplicate Certificate Loaded\",\n            \"message\": \"The document ID: 123456 already exists in the system.\",\n            \"read\": false,\n            \"document_id\": 123456,\n            \"notification_type\": \"Duplicate Document\",\n            \"created_at\": \"2022-12-15 13:04:30\",\n            \"updated_at\": \"2022-12-15 13:04:30\"\n        },\n        {\n            \"id\": 123457,\n            \"title\": \"Duplicate Document\",\n            \"message\": \"The document ID: 123457 already exists in the system.\",\n            \"read\": true,\n            \"document_id\": 123457,\n            \"notification_type\": \"Duplicate Document\",\n            \"created_at\": \"2022-11-24 10:54:39\",\n            \"updated_at\": \"2022-11-30 11:38:37\"\n        }\n    ],\n    \"links\": {\n        \"first\": \"https://{{api-domain}}/api/v2/notification?page=1\",\n        \"last\": null,\n        \"prev\": null,\n        \"next\": \"https://{{api-domain}}/api/v2/notification?page=2\"\n    },\n    \"meta\": {\n        \"current_page\": 1,\n        \"current_page_url\": \"https://{{api-domain}}/api/v2/notification?page=1\",\n        \"from\": 1,\n        \"path\": \"https://{{api-domain}}/api/v2/notification\",\n        \"per_page\": \"2\",\n        \"to\": 2\n    }\n}"}],"_postman_id":"69523302-bda8-4f44-9072-28eb3312c836"},{"name":"Get Notification","event":[{"listen":"test","script":{"id":"cc3a7430-ca9d-46c1-aa20-81a15dfaee32","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"c83fa557-6cf7-45d1-9bf2-924247e8dce4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{public_api_v2_domain}}notification/{{notification_id}}","description":"<p>Retrieve a single notification by its unique identifier.</p>\n<h2 id=\"authentication\">Authentication</h2>\n<p>This endpoint requires a Bearer token. Pass your API key using the <code>Authorization</code> header:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>Authorization: Bearer {{api-key}}\n</code></pre><h2 id=\"path-parameters\">Path Parameters</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>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>notification_id</code></td>\n<td>string</td>\n<td>Required</td>\n<td>The unique identifier of the notification to retrieve.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"query-parameters\">Query Parameters</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>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>shallow</code></td>\n<td>boolean</td>\n<td>Optional</td>\n<td>When set to <code>true</code>, returns a shallow representation of the notification with reduced detail. Defaults to <code>false</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response\">Response</h2>\n<p>Returns a notification object matching the provided <code>notification_id</code>.</p>\n<h2 id=\"error-responses\">Error Responses</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status Code</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>401 Unauthorized</code></td>\n<td>Missing or invalid API key.</td>\n</tr>\n<tr>\n<td><code>404 Not Found</code></td>\n<td>No notification exists with the given <code>notification_id</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["{{notification_id}}"],"host":["{{public_api_v2_domain}}notification"],"query":[{"disabled":true,"key":"shallow","value":"false"}],"variable":[]}},"response":[{"id":"10ec7f0a-9237-4114-a459-bae9ee1b75f2","name":"Get Notification","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{public_api_v2_domain}}notification/{{notification_id}}","host":["{{public_api_v2_domain}}notification"],"path":["{{notification_id}}"],"query":[{"key":"shallow","value":"false","disabled":true}]}},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 123456,\n        \"title\": \"Duplicate Certificate Loaded\",\n        \"message\": \"The document ID: 123456 already exists in the system.\",\n        \"read\": false,\n        \"document_id\": 123456,\n        \"notification_type\": \"Duplicate Document\",\n        \"created_at\": \"2022-12-15 13:04:30\",\n        \"updated_at\": \"2022-12-15 13:04:30\"\n    }\n}"}],"_postman_id":"c83fa557-6cf7-45d1-9bf2-924247e8dce4"}],"id":"223ea1fc-be25-4dd5-a762-ca18cfd47d6b","_postman_id":"223ea1fc-be25-4dd5-a762-ca18cfd47d6b","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{public_api_v2_token}}"}]},"isInherited":true,"source":{"_postman_id":"bd46f7ec-2f39-4add-9eff-160cb4bda033","id":"bd46f7ec-2f39-4add-9eff-160cb4bda033","name":"True Compliance Public API v2","type":"collection"}}},{"name":"Organisation","item":[{"name":"Get Compliance","event":[{"listen":"test","script":{"id":"9ee10853-ccb3-4a48-90e6-942a7776d324","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"ae16339a-cdb5-4bf3-83bb-566db59edb4f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{public_api_v2_domain}}organisation/compliance","urlObject":{"path":["compliance"],"host":["{{public_api_v2_domain}}organisation"],"query":[],"variable":[]}},"response":[{"id":"bff22648-d405-440a-a100-9e07bc4f2635","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":"{{public_api_v2_domain}}organisation/compliance"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"gas\": {\n        \"methodology\": \"Standard TC Compliance\",\n        \"compliant\": false,\n        \"percent\": \"99.2\"\n    },\n    \"fire-alarms\": {\n        \"methodology\": \"Standard TC Compliance\",\n        \"compliant\": false,\n        \"percent\": \"96.7\"\n    },\n    \"commercial-gas\": {\n        \"methodology\": \"Standard TC Compliance\",\n        \"compliant\": true,\n        \"percent\": \"100\"\n    },\n    \"loler\": {\n        \"methodology\": \"Standard TC Compliance\",\n        \"compliant\": false,\n        \"percent\": \"91.8\"\n    },\n    \"water-risk-assessment\": {\n        \"methodology\": \"Standard TC Compliance\",\n        \"compliant\": false,\n        \"percent\": \"89.7\"\n    }\n}"}],"_postman_id":"ae16339a-cdb5-4bf3-83bb-566db59edb4f"}],"id":"c972e89d-54eb-43cf-bb5d-36a3279656b5","_postman_id":"c972e89d-54eb-43cf-bb5d-36a3279656b5","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{public_api_v2_token}}"}]},"isInherited":true,"source":{"_postman_id":"bd46f7ec-2f39-4add-9eff-160cb4bda033","id":"bd46f7ec-2f39-4add-9eff-160cb4bda033","name":"True Compliance Public API v2","type":"collection"}}},{"name":"Unit","item":[{"name":"Get Units","event":[{"listen":"test","script":{"id":"2ffba160-c449-4c90-a505-fdaf408e9d42","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"9df32262-fed4-44a2-9f37-1054e1e6100c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{public_api_v2_domain}}unit?flag","description":"<h2 id=\"get-units\">Get Units</h2>\n<p>Retrieves a paginated list of units from the True Compliance API. Units represent individual properties or sub-properties (e.g. flats within a building) and can be filtered by various criteria including property type, parent property, UPRN, and date ranges.</p>\n<hr />\n<h2 id=\"query-parameters\">Query Parameters</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>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>Optional</td>\n<td>Number of results to return per page.</td>\n</tr>\n<tr>\n<td><code>page</code></td>\n<td>integer</td>\n<td>Optional</td>\n<td>Page number for pagination.</td>\n</tr>\n<tr>\n<td><code>property_type</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>Comma-separated list of property types to filter by (e.g. <code>House,Flat</code>). Valid values can be obtained from <code>GET library/property-types</code>.</td>\n</tr>\n<tr>\n<td><code>parent_property_id</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>Filter units by the ID of their parent property.</td>\n</tr>\n<tr>\n<td><code>parent_property_uprn</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>Filter units by the UPRN of their parent property.</td>\n</tr>\n<tr>\n<td><code>uprn</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>Filter by the unit's own UPRN (Unique Property Reference Number).</td>\n</tr>\n<tr>\n<td><code>flag</code></td>\n<td>string</td>\n<td>Optional</td>\n<td>Filter by a flag name</td>\n</tr>\n<tr>\n<td><code>created_since</code></td>\n<td>string (date)</td>\n<td>Optional</td>\n<td>Return units created on or after this date.</td>\n</tr>\n<tr>\n<td><code>created_before</code></td>\n<td>string (date)</td>\n<td>Optional</td>\n<td>Return units created before this date.</td>\n</tr>\n<tr>\n<td><code>updated_since</code></td>\n<td>string (date)</td>\n<td>Optional</td>\n<td>Return units updated on or after this date.</td>\n</tr>\n<tr>\n<td><code>updated_before</code></td>\n<td>string (date)</td>\n<td>Optional</td>\n<td>Return units updated before this date.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"authentication\">Authentication</h2>\n<p>This request requires an API key. The key is read from the <code>{{api-key}}</code> variable and should be set in your active environment before sending the request.</p>\n<hr />\n<h2 id=\"response\">Response</h2>\n<p>Returns a paginated list of unit objects matching the specified filters. The response includes pagination metadata (such as total count, current page, and page size) alongside the array of unit records.</p>\n","urlObject":{"host":["{{public_api_v2_domain}}unit"],"query":[{"disabled":true,"key":"limit","value":"10"},{"disabled":true,"key":"page","value":"1"},{"disabled":true,"description":{"content":"<p>Comma separated list of property types. You can find these by calling GET library/property-types</p>\n","type":"text/plain"},"key":"property_type","value":"House,Flat"},{"disabled":true,"key":"parent_property_id","value":""},{"disabled":true,"key":"parent_property_uprn","value":""},{"disabled":true,"key":"uprn","value":""},{"disabled":true,"key":"created_since","value":""},{"disabled":true,"key":"created_before","value":""},{"disabled":true,"key":"updated_since","value":""},{"disabled":true,"key":"updated_before","value":""},{"description":{"content":"<p>Single flag name</p>\n","type":"text/plain"},"key":"flag","value":null}],"variable":[]}},"response":[{"id":"f971aa17-6919-434e-91f3-4146b5c4ddcb","name":"200 OK","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text","disabled":true}],"url":{"raw":"{{public_api_v2_domain}}unit","host":["{{public_api_v2_domain}}unit"],"query":[{"key":"limit","value":"10","disabled":true},{"key":"page","value":"1","type":"text","disabled":true},{"key":"property_type","value":"House,Flat","description":"Comma separated list of property types. You can find these by calling GET library/property-types","type":"text","disabled":true},{"key":"parent_property_id","value":"","type":"text","disabled":true},{"key":"parent_property_uprn","value":"","disabled":true},{"key":"uprn","value":"","disabled":true},{"key":"created_since","value":"","type":"text","disabled":true},{"key":"created_before","value":"","type":"text","disabled":true},{"key":"updated_since","value":"","type":"text","disabled":true},{"key":"updated_before","value":"","type":"text","disabled":true}]}},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"id\": 123456,\n            \"uprn\": \"ABC123\",\n            \"address_1\": \"1 Main Road\",\n            \"address_2\": \"\",\n            \"town\": \"London\",\n            \"county\": \"\",\n            \"postcode\": \"AB1 2CD\",\n            \"resident\": \"\",\n            \"updated_at\": \"2024-06-01 01:00:58\",\n            \"address\": \"1 Main Road, London, AB1 2CD\",\n            \"property_type\": \"Residence\",\n            \"parent_property_id\": null,\n            \"parent_parent_uprn\": null,\n            \"property_data\": {\n                \"block_code\": \"ABC123\",\n                \"contractor_contract\": \"FEJ3\",\n                \"housing_officer_name\": \"Mary Test\",\n                ...\n            },\n            \"compliance_statuses\": [\n                {\n                    \"stream_name\": \"Electrical\",\n                    \"methodology\": \"Standard TC Compliance\",\n                    \"compliant\": false,\n                    \"non_compliant_reason\": \"not-in-date\",\n                    \"certificate_used\": 123456,\n                    \"certificate_filename\": \"test-eicr.pdf\",\n                    \"certificate_contractor\": \"Various\",\n                    \"certificate_number\": \"123456\",\n                    \"last_checked_date\": \"2019-05-31T00:00:00.000000Z\",\n                    \"next_due_date\": \"2024-05-31T00:00:00.000000Z\",\n                    \"created_at\": \"2020-11-13T16:27:26.000000Z\",\n                    \"certificate_created_at\": \"2020-11-13T16:23:32.000000Z\"\n                }\n            ],\n            \"compliance_streams\": [\n                \"Electrical\"\n            ],\n            \"flags\": []\n        },\n        {\n            \"id\": 123457,\n            \"uprn\": \"ABC124\",\n            \"address_1\": \"2 Main Road\",\n            \"address_2\": \"\",\n            \"town\": \"London\",\n            \"county\": \"\",\n            \"postcode\": \"AB1 2CD\",\n            \"resident\": \"\",\n            \"updated_at\": \"2024-06-01 01:01:02\",\n            \"address\": \"2 Main Road, London, AB1 2CD\",\n            \"property_type\": \"Residence\",\n            \"parent_property_id\": null,\n            \"parent_parent_uprn\": null,\n            \"property_data\": {\n                \"block_code\": \"ABC124\",\n                \"contractor_contract\": \"PO9\",\n                \"housing_officer_name\": \"Geoff Test\",\n                ...\n            },\n            \"compliance_statuses\": [\n                {\n                    \"stream_name\": \"Gas\",\n                    \"methodology\": \"Standard TC Compliance\",\n                    \"compliant\": false,\n                    \"non_compliant_reason\": \"not-in-date\",\n                    \"certificate_used\": 123458,\n                    \"certificate_filename\": \"test-lgsr.pdf\",\n                    \"certificate_contractor\": \"Test Contractore\",\n                    \"certificate_number\": \"123458\",\n                    \"last_checked_date\": \"2022-05-04T00:00:00.000000Z\",\n                    \"next_due_date\": \"2023-05-04T00:00:00.000000Z\",\n                    \"created_at\": null,\n                    \"certificate_created_at\": \"2022-05-06T06:01:11.000000Z\"\n                },\n                {\n                    \"stream_name\": \"Electrical\",\n                    \"methodology\": \"Standard TC Compliance\",\n                    \"compliant\": false,\n                    \"non_compliant_reason\": \"not-in-date\",\n                    \"certificate_used\": 123459,\n                    \"certificate_filename\": \"test-eicr.pdf\",\n                    \"certificate_contractor\": \"Test Contractore\",\n                    \"certificate_number\": \"123459\",\n                    \"last_checked_date\": \"2019-05-31T00:00:00.000000Z\",\n                    \"next_due_date\": \"2024-05-31T00:00:00.000000Z\",\n                    \"created_at\": null,\n                    \"certificate_created_at\": \"2020-11-13T16:24:03.000000Z\"\n                }\n            ],\n            \"compliance_streams\": [\n                \"Gas\",\n                \"Electrical\"\n            ],\n            \"flags\": []\n        }\n    ],\n    \"links\": {\n        \"first\": \"https://{{api-domain}}/api/v2/unit?page=1\",\n        \"last\": null,\n        \"prev\": null,\n        \"next\": \"https://{{api-domain}}/api/v2/unit?page=2\"\n    },\n    \"meta\": {\n        \"current_page\": 1,\n        \"current_page_url\": \"https://{{api-domain}}/api/v2/unit?page=1\",\n        \"from\": 1,\n        \"path\": \"https://{{api-domain}}/api/v2/unit\",\n        \"per_page\": \"2\",\n        \"to\": 2\n    }\n}"}],"_postman_id":"9df32262-fed4-44a2-9f37-1054e1e6100c"},{"name":"Get Unit","event":[{"listen":"test","script":{"id":"c06e1408-770f-4393-acaa-252a41aee381","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"df81c88c-814b-450f-8cc7-f7ed77763074","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{public_api_v2_domain}}unit/{{unit_id}}","description":"<h2 id=\"get-unit\">Get Unit</h2>\n<p>Retrieves a single unit by its unique identifier.</p>\n<hr />\n<h2 id=\"path-variables\">Path Variables</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Variable</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>unit_id</code></td>\n<td>string</td>\n<td>Required</td>\n<td>The unique identifier of the unit to retrieve.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"authentication\">Authentication</h2>\n<p>This endpoint requires a Bearer token. Pass your API key using the <code>Authorization</code> header:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>Authorization: Bearer {{api-key}}\n</code></pre><hr />\n<h2 id=\"response\">Response</h2>\n<p>Returns a unit object matching the provided <code>unit_id</code>.</p>\n<h2 id=\"error-responses\">Error Responses</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status Code</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>401 Unauthorized</code></td>\n<td>Missing or invalid API key.</td>\n</tr>\n<tr>\n<td><code>404 Not Found</code></td>\n<td>No unit exists with the given <code>unit_id</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n","urlObject":{"path":["{{unit_id}}"],"host":["{{public_api_v2_domain}}unit"],"query":[],"variable":[]}},"response":[{"id":"f4f2d5c1-b1b6-48d1-9007-3a5254c387f9","name":"200 OK","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text","disabled":true}],"url":"{{public_api_v2_domain}}unit/{{unit_id}}"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"id\": 123456,\n        \"uprn\": \"ABC123\",\n        \"address_1\": \"1 Main Road\",\n        \"address_2\": \"\",\n        \"town\": \"London\",\n        \"county\": \"\",\n        \"postcode\": \"AB1 2CD\",\n        \"resident\": \"\",\n        \"updated_at\": \"2024-06-01 01:00:58\",\n        \"address\": \"1 Main Road, London, AB1 2CD\",\n        \"property_type\": \"Residence\",\n        \"parent_property_id\": null,\n        \"parent_parent_uprn\": null,\n        \"property_data\": {\n            \"block_code\": \"ABC123\",\n            \"contractor_contract\": \"FEJ3\",\n            \"housing_officer_name\": \"Mary Test\",\n            ...\n        },\n        \"compliance_statuses\": [\n            {\n                \"stream_name\": \"Electrical\",\n                \"methodology\": \"Standard TC Compliance\",\n                \"compliant\": false,\n                \"non_compliant_reason\": \"not-in-date\",\n                \"certificate_used\": 123456,\n                \"certificate_filename\": \"test-eicr.pdf\",\n                \"certificate_contractor\": \"Various\",\n                \"certificate_number\": \"123456\",\n                \"last_checked_date\": \"2019-05-31T00:00:00.000000Z\",\n                \"next_due_date\": \"2024-05-31T00:00:00.000000Z\",\n                \"created_at\": \"2020-11-13T16:27:26.000000Z\",\n                \"certificate_created_at\": \"2020-11-13T16:23:32.000000Z\"\n            }\n        ],\n        \"compliance_streams\": [\n            \"Electrical\"\n        ],\n        \"flags\": []\n    }\n}"}],"_postman_id":"df81c88c-814b-450f-8cc7-f7ed77763074"},{"name":"Create Unit","id":"999ad3e3-9224-4958-800d-a63b8ff1e0dc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n\t\"uprn\":\"SAU123\",\n\t\"address_1\":\"Flat 15, Alpha House\",\n\t\"address_2\":\"123 Main Road\",\n\t\"town\":\"London\",\n\t\"county\":\"\",\n\t\"postcode\":\"AB12 3CD\",\n\t\"property_type\": \"Residence\",\n\t\"parent_uprn\":\"43055444\",\n    \"parent_property_id\":\"\",\n    \"property_data\": [\n        {\n            \"key\": \"Property Number\",\n            \"value\": \"123456\"\n        },\n        {\n            \"key\": \"Tenancy Type\",\n            \"value\": \"Social Flat\"\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{public_api_v2_domain}}unit","description":"<h2 id=\"create-unit\">Create Unit</h2>\n<p>Creates a new unit (property) in the True Compliance system.</p>\n<hr />\n<h2 id=\"authentication\">Authentication</h2>\n<p>This endpoint requires a Bearer token. Pass your API key using the <code>Authorization</code> header:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>Authorization: Bearer {{api-key}}\n</code></pre><hr />\n<h2 id=\"request-body\">Request Body</h2>\n<p>The request body must be sent as JSON.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>uprn</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>The Unique Property Reference Number (UPRN) for the unit (e.g. <code>\"SAU123\"</code>).</td>\n</tr>\n<tr>\n<td><code>address_1</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>The first line of the unit's address (e.g. <code>\"Flat 15, Alpha House\"</code>).</td>\n</tr>\n<tr>\n<td><code>address_2</code></td>\n<td>string</td>\n<td>No</td>\n<td>The second line of the unit's address (e.g. <code>\"123 Main Road\"</code>).</td>\n</tr>\n<tr>\n<td><code>town</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>The town or city of the unit (e.g. <code>\"London\"</code>).</td>\n</tr>\n<tr>\n<td><code>county</code></td>\n<td>string</td>\n<td>No</td>\n<td>The county of the unit.</td>\n</tr>\n<tr>\n<td><code>postcode</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>The postcode of the unit (e.g. <code>\"AB12 3CD\"</code>).</td>\n</tr>\n<tr>\n<td><code>property_type</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>The type of property (e.g. <code>\"Residence\"</code>). Valid values can be obtained from <code>GET library/property-types</code>.</td>\n</tr>\n<tr>\n<td><code>parent_uprn</code></td>\n<td>string</td>\n<td>No</td>\n<td>The UPRN of the parent property this unit belongs to (e.g. <code>\"43055444\"</code>).</td>\n</tr>\n<tr>\n<td><code>parent_property_id</code></td>\n<td>string</td>\n<td>No</td>\n<td>The ID of the parent property this unit belongs to.</td>\n</tr>\n<tr>\n<td><code>property_data</code></td>\n<td>array</td>\n<td>No</td>\n<td>An array of key/value pairs for storing additional custom property data. Each object must contain a <code>key</code> (string) and a <code>value</code> (string).</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"response\">Response</h2>\n<p>Returns the created unit object on success.</p>\n<h2 id=\"error-responses\">Error Responses</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status Code</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>401 Unauthorized</code></td>\n<td>Missing or invalid API key.</td>\n</tr>\n<tr>\n<td><code>422 Unprocessable Entity</code></td>\n<td>Validation failed. Check that all required fields are present and valid.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n","urlObject":{"host":["{{public_api_v2_domain}}unit"],"query":[],"variable":[]}},"response":[],"_postman_id":"999ad3e3-9224-4958-800d-a63b8ff1e0dc"},{"name":"Update Unit","event":[{"listen":"test","script":{"id":"a3c5a993-49e4-4802-9e2d-2094628b662b","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"8c859880-d6ec-4b2f-8447-c0f04d0d62cd","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"uprn\":\"New UPRN\",\n\t\"address_1\": \"Updated address 1\",\n\t\"address_2\": \"Updated address 2\",\n\t\"town\":\"Updated town\",\n\t\"county\":\"Updated county\",\n\t\"postcode\":\"AB12 3CD\",\n\t\"property_type\": \"Residence\",\n\t\"parent_uprn\":\"New parent UPRN\",\n    \"parent_property_id\":\"New parent ID\"\n}","options":{"raw":{"language":"json"}}},"url":"{{public_api_v2_domain}}unit/{{unit_id}}","description":"<h2 id=\"update-unit\">Update Unit</h2>\n<p>Partially updates an existing unit (property) in the True Compliance system. Only the fields provided in the request body will be updated.</p>\n<hr />\n<h2 id=\"path-variables\">Path Variables</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Variable</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>unit_id</code></td>\n<td>string</td>\n<td>Required</td>\n<td>The unique identifier of the unit to update.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"authentication\">Authentication</h2>\n<p>This endpoint requires a Bearer token. Pass your API key using the <code>Authorization</code> header:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>Authorization: Bearer {{api-key}}\n</code></pre><hr />\n<h2 id=\"request-body\">Request Body</h2>\n<p>The request body must be sent as JSON. All fields are optional — only include the fields you wish to update.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>uprn</code></td>\n<td>string</td>\n<td>No</td>\n<td>The Unique Property Reference Number (UPRN) for the unit (e.g. <code>\"SAU123\"</code>).</td>\n</tr>\n<tr>\n<td><code>address_1</code></td>\n<td>string</td>\n<td>No</td>\n<td>The first line of the unit's address (e.g. <code>\"Flat 15, Alpha House\"</code>).</td>\n</tr>\n<tr>\n<td><code>address_2</code></td>\n<td>string</td>\n<td>No</td>\n<td>The second line of the unit's address (e.g. <code>\"123 Main Road\"</code>).</td>\n</tr>\n<tr>\n<td><code>town</code></td>\n<td>string</td>\n<td>No</td>\n<td>The town or city of the unit (e.g. <code>\"London\"</code>).</td>\n</tr>\n<tr>\n<td><code>county</code></td>\n<td>string</td>\n<td>No</td>\n<td>The county of the unit.</td>\n</tr>\n<tr>\n<td><code>postcode</code></td>\n<td>string</td>\n<td>No</td>\n<td>The postcode of the unit (e.g. <code>\"AB12 3CD\"</code>).</td>\n</tr>\n<tr>\n<td><code>property_type</code></td>\n<td>string</td>\n<td>No</td>\n<td>The type of property (e.g. <code>\"Residence\"</code>). Valid values can be obtained from <code>GET library/property-types</code>.</td>\n</tr>\n<tr>\n<td><code>parent_uprn</code></td>\n<td>string</td>\n<td>No</td>\n<td>The UPRN of the parent property this unit belongs to (e.g. <code>\"43055444\"</code>).</td>\n</tr>\n<tr>\n<td><code>parent_property_id</code></td>\n<td>string</td>\n<td>No</td>\n<td>The ID of the parent property this unit belongs to.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"response\">Response</h2>\n<p>Returns the updated unit object on success.</p>\n<h2 id=\"error-responses\">Error Responses</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status Code</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>401 Unauthorized</code></td>\n<td>Missing or invalid API key.</td>\n</tr>\n<tr>\n<td><code>404 Not Found</code></td>\n<td>No unit exists with the given <code>unit_id</code>.</td>\n</tr>\n<tr>\n<td><code>422 Unprocessable Entity</code></td>\n<td>Validation failed. Check that all provided fields are valid.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["{{unit_id}}"],"host":["{{public_api_v2_domain}}unit"],"query":[],"variable":[]}},"response":[],"_postman_id":"8c859880-d6ec-4b2f-8447-c0f04d0d62cd"},{"name":"Delete Unit","event":[{"listen":"test","script":{"id":"dc814dad-c192-40a4-bee0-0c9a868f76d1","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"b20e0df5-3d5c-43c9-a391-fc955102b19c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"DELETE","header":[],"url":"{{public_api_v2_domain}}unit/{{unit_id}}","description":"<h2 id=\"delete-unit\">Delete Unit</h2>\n<p>Permanently deletes a single unit by its unique identifier.</p>\n<hr />\n<h2 id=\"path-variables\">Path Variables</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Variable</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>unit_id</code></td>\n<td>string</td>\n<td>Required</td>\n<td>The unique identifier of the unit to delete.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"authentication\">Authentication</h2>\n<p>This endpoint requires a Bearer token. Pass your API key using the <code>Authorization</code> header:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>Authorization: Bearer {{api-key}}\n</code></pre><hr />\n<h2 id=\"response\">Response</h2>\n<p>Returns a <code>200 OK</code> on success.</p>\n<h2 id=\"error-responses\">Error Responses</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status Code</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>401 Unauthorized</code></td>\n<td>Missing or invalid API key.</td>\n</tr>\n<tr>\n<td><code>404 Not Found</code></td>\n<td>No unit exists with the given <code>unit_id</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n","urlObject":{"path":["{{unit_id}}"],"host":["{{public_api_v2_domain}}unit"],"query":[],"variable":[]}},"response":[],"_postman_id":"b20e0df5-3d5c-43c9-a391-fc955102b19c"},{"name":"Restore Unit","event":[{"listen":"test","script":{"id":"7725fc45-00d4-4f74-b5d8-791193ca9127","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"761b49a4-c4cd-4c53-bf11-21d5e9e5366f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"PATCH","header":[],"url":"{{public_api_v2_domain}}unit/{{unit_id}}/restore","description":"<h2 id=\"restore-unit\">Restore Unit</h2>\n<p>Restores a previously deleted unit by its unique identifier, making it active in the True Compliance system again.</p>\n<hr />\n<h2 id=\"path-variables\">Path Variables</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Variable</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>unit_id</code></td>\n<td>string</td>\n<td>Required</td>\n<td>The unique identifier of the unit to restore.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"authentication\">Authentication</h2>\n<p>This endpoint requires a Bearer token. Pass your API key using the <code>Authorization</code> header:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>Authorization: Bearer {{api-key}}\n</code></pre><hr />\n<h2 id=\"response\">Response</h2>\n<p>Returns a <code>200 OK</code> on success.</p>\n<h2 id=\"error-responses\">Error Responses</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status Code</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>401 Unauthorized</code></td>\n<td>Missing or invalid API key.</td>\n</tr>\n<tr>\n<td><code>404 Not Found</code></td>\n<td>No unit exists with the given <code>unit_id</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["{{unit_id}}","restore"],"host":["{{public_api_v2_domain}}unit"],"query":[],"variable":[]}},"response":[],"_postman_id":"761b49a4-c4cd-4c53-bf11-21d5e9e5366f"},{"name":"Add Supporting Document","id":"dac2057c-9870-45af-9d46-e2159f35dc1f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"key":"document","type":"file","uuid":"8db63f4c-256c-44a6-9405-0997c996895f","value":null},{"key":"document_title","value":"New Supporting Doc","type":"text","uuid":"29e189ea-f514-43bb-83e4-b9e7b4cacae8"},{"key":"compliance_stream","value":"Gas","type":"text","uuid":"7bee1730-16eb-4a3b-9dc4-7fa83c99fe8e"},{"key":"folder","value":"documents","type":"text","uuid":"1eb70855-2900-44a7-b376-ae205bc1f7bb","disabled":true}]},"url":"{{public_api_v2_domain}}unit/{{unit_id}}/supporting-document","description":"<p>Uploads a supporting document to a specific unit (property).</p>\n<h2 id=\"path-variables\">Path Variables</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Variable</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>unit_id</code></td>\n<td>string</td>\n<td>Required</td>\n<td>The unique identifier of the unit to attach the supporting document to.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"request-body\">Request Body</h2>\n<p>The request body must be sent as <code>multipart/form-data</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>document</code></td>\n<td>file</td>\n<td>Yes</td>\n<td>The document file to upload. Maximum file size: 1 MB.</td>\n</tr>\n<tr>\n<td><code>document_title</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>A title for the supporting document (e.g. <code>\"New Supporting Doc\"</code>).</td>\n</tr>\n<tr>\n<td><code>compliance_stream</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>The compliance stream this document relates to (e.g. <code>\"Gas\"</code>).</td>\n</tr>\n<tr>\n<td><code>folder</code></td>\n<td>string</td>\n<td>No</td>\n<td>The folder to place the document in (e.g. <code>\"documents\"</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"authentication\">Authentication</h2>\n<p>This endpoint requires a Bearer token. Pass your API key using the <code>Authorization</code> header:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>Authorization: Bearer {{api-key}}\n\n</code></pre><h2 id=\"response\">Response</h2>\n<p>Returns a <code>200 OK</code> on success.</p>\n<h2 id=\"error-responses\">Error Responses</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status Code</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>401 Unauthorized</code></td>\n<td>Missing or invalid API key.</td>\n</tr>\n<tr>\n<td><code>404 Not Found</code></td>\n<td>No unit exists with the given <code>property_id</code>.</td>\n</tr>\n<tr>\n<td><code>422 Unprocessable Entity</code></td>\n<td>Validation failed. Check that all required fields are present and valid.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"notes\">Notes</h2>\n<ul>\n<li><strong>Compliance Streams:</strong> Use the library endpoint to retrieve all valid values for <code>compliance_stream</code>:<ul>\n<li><code>GET library/compliance-streams</code></li>\n</ul>\n</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{public_api_v2_token}}"}]},"isInherited":true,"source":{"_postman_id":"bd46f7ec-2f39-4add-9eff-160cb4bda033","id":"bd46f7ec-2f39-4add-9eff-160cb4bda033","name":"True Compliance Public API v2","type":"collection"}},"urlObject":{"path":["{{unit_id}}","supporting-document"],"host":["{{public_api_v2_domain}}unit"],"query":[],"variable":[]}},"response":[],"_postman_id":"dac2057c-9870-45af-9d46-e2159f35dc1f"},{"name":"Add Flag","id":"16b725ca-e2fa-4708-8a61-42ed0aaa42e1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"flag_name\": \"Example flag name\",\n    \"expiry_date\": \"2026-03-02\"\n}","options":{"raw":{"language":"json"}}},"url":"{{public_api_v2_domain}}unit/{{property_id}}/flag","description":"<h2 id=\"add-flag\">Add Flag</h2>\n<p>Adds a flag to a specific unit (property). Flags can be used to mark a unit with a named label and an optional expiry date, useful for compliance tracking or status indicators.</p>\n<hr />\n<h2 id=\"path-parameters\">Path Parameters</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>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>property_id</code></td>\n<td>string</td>\n<td>✅ Yes</td>\n<td>The unique identifier of the unit/property to which the flag will be added.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"request-body\">Request Body</h2>\n<p>The request body must be sent as JSON (<code>application/json</code>).</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>flag_name</code></td>\n<td>string</td>\n<td>✅ Yes</td>\n<td>The name of the flag to add to the unit.</td>\n</tr>\n<tr>\n<td><code>expiry_date</code></td>\n<td>string (date)</td>\n<td>❌ No</td>\n<td>The expiry date of the flag in <code>YYYY-MM-DD</code> format. If provided, the flag will be considered active until this date.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"example-request-body\">Example Request Body</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"flag_name\": \"Example flag name\",\n    \"expiry_date\": \"2026-03-02\"\n}\n</code></pre>\n<hr />\n<h2 id=\"authentication\">Authentication</h2>\n<p>This request inherits its authentication configuration from the parent collection. Ensure the collection-level auth credentials are set correctly before sending this request.</p>\n","urlObject":{"path":["{{property_id}}","flag"],"host":["{{public_api_v2_domain}}unit"],"query":[],"variable":[]}},"response":[],"_postman_id":"16b725ca-e2fa-4708-8a61-42ed0aaa42e1"},{"name":"Remove Flag","id":"c6e10a89-fb5c-47e5-8267-e78f2a0977ed","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n    \"flag_name\": \"Example flag name\"\n}","options":{"raw":{"language":"json"}}},"url":"{{public_api_v2_domain}}unit/{{property_id}}/flag","description":"<p>Removes a flag from a specific Unit.</p>\n<h2 id=\"path-variables\">Path Variables</h2>\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>property_id</code></td>\n<td>The unique identifier of the Unit from which to remove the flag.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"request-body\">Request Body</h2>\n<p>The request body must be sent as JSON.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>flag_name</code></td>\n<td>String</td>\n<td>Yes</td>\n<td>The name of the flag to remove from the Unit (e.g. <code>\"Capped Meter\"</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response\">Response</h2>\n<p>Returns a <code>200 OK</code> on success.</p>\n<h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p><strong>Flags:</strong> Use the library endpoint to retrieve all valid values for <code>flag_name</code>:</p>\n<ul>\n<li><code>GET library/flags</code></li>\n</ul>\n</li>\n</ul>\n","urlObject":{"path":["{{property_id}}","flag"],"host":["{{public_api_v2_domain}}unit"],"query":[],"variable":[]}},"response":[],"_postman_id":"c6e10a89-fb5c-47e5-8267-e78f2a0977ed"},{"name":"Add or Update Unit Data","event":[{"listen":"test","script":{"id":"8b612b72-c6c9-4b2b-8482-5f0ec554335e","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"effa9019-74f8-4615-8f8d-4c28aa52a5cd","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"new-property-data-key\": \"new-property-data-value\",\n    \"existing-property-data-key\": \"updated-property-data-value\"\n}","options":{"raw":{"language":"json"}}},"url":"{{public_api_v2_domain}}unit/{{unit_id}}/data","description":"<h2 id=\"add-or-update-unit-data\">Add or Update Unit Data</h2>\n<p>Adds new data properties or updates existing ones on a specific unit.</p>\n<p><strong>Method:</strong> <code>PATCH</code><br /><strong>URL:</strong> <code>{{public_api_v2_domain}}unit/{{unit_id}}/data</code></p>\n<hr />\n<h3 id=\"variables\">Variables</h3>\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>{{unit_id}}</code></td>\n<td>The ID of the unit whose data properties are being modified</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"request-body\">Request Body</h3>\n<p>A JSON object where each key-value pair represents a data property to add or update on the unit.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"new-property-data-key\": \"new-property-data-value\",\n    \"existing-property-data-key\": \"updated-property-data-value\"\n}\n\n</code></pre>\n<hr />\n<h3 id=\"notes\">Notes</h3>\n<ul>\n<li><p><strong>Existing properties</strong> included in the request body will be updated with the new value.</p>\n</li>\n<li><p><strong>New properties</strong> included in the request body will be added to the unit.</p>\n</li>\n<li><p><strong>Properties not included</strong> in the request body are left unchanged.</p>\n</li>\n</ul>\n<hr />\n<h3 id=\"response\">Response</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>200 OK</code></td>\n<td>The unit data was successfully added or updated</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["{{unit_id}}","data"],"host":["{{public_api_v2_domain}}unit"],"query":[],"variable":[]}},"response":[],"_postman_id":"effa9019-74f8-4615-8f8d-4c28aa52a5cd"},{"name":"Add Compliance Stream","event":[{"listen":"test","script":{"id":"a61184a1-3429-4ffe-aa97-b8a2d9b8ff66","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"949a4bf9-277e-446b-a116-2ce4f09db636","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"compliance_stream\": \"Detectors\"\n}","options":{"raw":{"language":"json"}}},"url":"{{public_api_v2_domain}}unit/{{unit_id}}/stream","description":"<p>Adds a compliance stream to a specific Unit.</p>\n<h2 id=\"path-variables\">Path Variables</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Variable</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>unit_id</code></td>\n<td>string</td>\n<td>Required</td>\n<td>The unique identifier of the unit to add the compliance stream to.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"request-body\">Request Body</h2>\n<p>The request body must be sent as JSON.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>compliance_stream</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>The name of the compliance stream to add to the unit (e.g. <code>\"Detectors\"</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"authentication\">Authentication</h2>\n<p>This endpoint requires a Bearer token. Pass your API key using the <code>Authorization</code> header:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>Authorization: Bearer {{api-key}}\n</code></pre><h2 id=\"response\">Response</h2>\n<p>Returns a <code>200 OK</code> on success.</p>\n<h2 id=\"error-responses\">Error Responses</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status Code</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>401 Unauthorized</code></td>\n<td>Missing or invalid API key.</td>\n</tr>\n<tr>\n<td><code>404 Not Found</code></td>\n<td>No unit exists with the given <code>unit_id</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"notes\">Notes</h2>\n<ul>\n<li><strong>Compliance Streams:</strong> Use the library endpoint to retrieve all valid values for <code>compliance_stream</code>:<ul>\n<li><code>GET library/compliance-streams</code></li>\n</ul>\n</li>\n</ul>\n","urlObject":{"path":["{{unit_id}}","stream"],"host":["{{public_api_v2_domain}}unit"],"query":[],"variable":[]}},"response":[],"_postman_id":"949a4bf9-277e-446b-a116-2ce4f09db636"},{"name":"Remove Compliance Stream","event":[{"listen":"test","script":{"id":"9e61b2e4-e0db-4b99-b452-200d42d9bae2","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"621c6dd2-7d6f-44b4-877a-c51880292bd7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\n    \"compliance_stream\": \"Detectors\"\n}","options":{"raw":{"language":"json"}}},"url":"{{public_api_v2_domain}}unit/{{unit_id}}/stream","description":"<p>Removes a compliance stream from a specific Unit.</p>\n<h2 id=\"path-variables\">Path Variables</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Variable</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>unit_id</code></td>\n<td>string</td>\n<td>Required</td>\n<td>The unique identifier of the unit to remove the compliance stream from.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"request-body\">Request Body</h2>\n<p>The request body must be sent as JSON.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>compliance_stream</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>The name of the compliance stream to remove from the unit (e.g. <code>\"Detectors\"</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"authentication\">Authentication</h2>\n<p>This endpoint requires a Bearer token. Pass your API key using the <code>Authorization</code> header:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>Authorization: Bearer {{api-key}}\n</code></pre><h2 id=\"response\">Response</h2>\n<p>Returns a <code>200 OK</code> on success.</p>\n<h2 id=\"error-responses\">Error Responses</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status Code</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>401 Unauthorized</code></td>\n<td>Missing or invalid API key.</td>\n</tr>\n<tr>\n<td><code>404 Not Found</code></td>\n<td>No unit exists with the given <code>unit_id</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"notes\">Notes</h2>\n<ul>\n<li><strong>Compliance Streams:</strong> Use the library endpoint to retrieve all valid values for <code>compliance_stream</code>:<ul>\n<li><code>GET library/compliance-streams</code></li>\n</ul>\n</li>\n</ul>\n","urlObject":{"path":["{{unit_id}}","stream"],"host":["{{public_api_v2_domain}}unit"],"query":[],"variable":[]}},"response":[],"_postman_id":"621c6dd2-7d6f-44b4-877a-c51880292bd7"}],"id":"d22f30c9-ece5-41ed-9718-19dbc6457b54","_postman_id":"d22f30c9-ece5-41ed-9718-19dbc6457b54","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{public_api_v2_token}}"}]},"isInherited":true,"source":{"_postman_id":"bd46f7ec-2f39-4add-9eff-160cb4bda033","id":"bd46f7ec-2f39-4add-9eff-160cb4bda033","name":"True Compliance Public API v2","type":"collection"}}},{"name":"Fault","item":[{"name":"Update Status","id":"35398c33-df8b-413b-b592-86aa196fba25","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"fault_status\": \"To Review\"\n}","options":{"raw":{"language":"json"}}},"url":"{{public_api_v2_domain}}fault/{{fault_id}}/update-status","description":"<p>Updates the status of a specific Fault.</p>\n<h2 id=\"path-variables\">Path Variables</h2>\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>fault_id</code></td>\n<td>The unique identifier of the Fault to update.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"request-body\">Request Body</h2>\n<p>The request body must be sent as JSON.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>fault_status</code></td>\n<td>String</td>\n<td>Yes</td>\n<td>The new status to apply to the Fault (e.g. <code>\"To Review\"</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response\">Response</h2>\n<p>Returns a <code>200 OK</code> on success.</p>\n<h2 id=\"notes\">Notes</h2>\n<ul>\n<li>Use the library endpoint to retrieve all valid values for <code>fault_status</code>:<ul>\n<li><code>GET library/fault-statuses</code></li>\n</ul>\n</li>\n</ul>\n","urlObject":{"path":["{{fault_id}}","update-status"],"host":["{{public_api_v2_domain}}fault"],"query":[],"variable":[]}},"response":[],"_postman_id":"35398c33-df8b-413b-b592-86aa196fba25"},{"name":"Add Note","id":"5fbf5a24-146c-4e09-904f-9f60a5949c11","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"key":"note","value":"This is the note","type":"text","uuid":"3c924e1b-8676-4e46-84bb-89d1998a7973"},{"key":"evidence","description":"<p>File. Optional. 1mb max filesize.</p>\n","type":"file","uuid":"69637232-271e-41c3-844b-74501672cf24","value":null}]},"url":"{{public_api_v2_domain}}fault/{{fault_id}}/note","description":"<p>Adds a note to a specific Fault, with an optional file attachment.</p>\n<h2 id=\"path-variables\">Path Variables</h2>\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>fault_id</code></td>\n<td>The unique identifier of the Fault to add a note to.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"request-body\">Request Body</h2>\n<p>The request body must be sent as <code>multipart/form-data</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>note</code></td>\n<td>String</td>\n<td>Yes</td>\n<td>The text content of the note to add.</td>\n</tr>\n<tr>\n<td><code>evidence</code></td>\n<td>File</td>\n<td>No</td>\n<td>An optional supporting file attachment. Maximum file size: 1 MB.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response\">Response</h2>\n<p>Returns a <code>200 OK</code> on success.</p>\n","urlObject":{"path":["{{fault_id}}","note"],"host":["{{public_api_v2_domain}}fault"],"query":[],"variable":[]}},"response":[],"_postman_id":"5fbf5a24-146c-4e09-904f-9f60a5949c11"}],"id":"a4a8d0de-4e69-4290-a320-fbe39da72595","_postman_id":"a4a8d0de-4e69-4290-a320-fbe39da72595","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{public_api_v2_token}}"}]},"isInherited":true,"source":{"_postman_id":"bd46f7ec-2f39-4add-9eff-160cb4bda033","id":"bd46f7ec-2f39-4add-9eff-160cb4bda033","name":"True Compliance Public API v2","type":"collection"}}},{"name":"Report","item":[{"name":"Get Latest Report","id":"88628fb2-1a16-4361-9bdd-17e07c55882c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{public_api_v2_domain}}report/{{slug}}","description":"<p>Retrieves the latest report for a given organisation or property, identified by its unique slug.</p>\n<h2 id=\"authentication\">Authentication</h2>\n<p>This endpoint requires a Bearer token. Pass your API key using the <code>Authorization</code> header:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>Authorization: Bearer {{api-key}}\n\n</code></pre><h2 id=\"path-variables\">Path Variables</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Variable</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>slug</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>The unique slug identifier for the report to retrieve.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response\">Response</h2>\n<p>Returns the latest report object on success.</p>\n<h2 id=\"error-responses\">Error Responses</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status Code</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>401 Unauthorized</code></td>\n<td>Missing or invalid API key.</td>\n</tr>\n<tr>\n<td><code>404 Not Found</code></td>\n<td>No report exists for the given <code>slug</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["{{slug}}"],"host":["{{public_api_v2_domain}}report"],"query":[],"variable":[]}},"response":[{"id":"e54a88cd-2da9-4d80-810a-58ccce418e7d","name":"200 OK","originalRequest":{"method":"GET","header":[],"url":"{{public_api_v2_domain}}report/{{slug}}"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"Report data retrieved\",\n    \"data\": {\n        \"download_link\": \"{{presigned-download-url}}\",\n        \"certificates-c\": [\n            {\n                \"UPRN\": \"ABC123\",\n                \"address\": \"FLAT 24, 11 Main Road, London, AB1 2CD\",\n                \"tenure\": \"Prh\",\n                \"contractor_code\": \"FG6\",\n                \"last_checked_date\": \"2024-09-30\",\n                \"next_due_date\": \"2025-09-30\",\n                \"cert_ever_loaded\": \"Yes\",\n                \"in_date\": \"No\",\n                \"non_compliance_status\": \"Not in date\"\n            },\n            {\n                \"UPRN\": \"ABC123\",\n                \"address\": \"FLAT 25, 11 Main Road, London, AB1 2CD\",\n                \"tenure\": \"Prh\",\n                \"contractor_code\": \"LH2\",\n                \"last_checked_date\": \"2024-09-23\",\n                \"next_due_date\": \"2025-09-23\",\n                \"cert_ever_loaded\": \"Yes\",\n                \"in_date\": \"No\",\n                \"non_compliance_status\": \"Not in date\"\n            },\n            ....\n        ]\n    }\n}"},{"id":"4d792fcb-069d-429c-8503-28e069037f4c","name":"404 Not Found","originalRequest":{"method":"GET","header":[],"url":"{{public_api_v2_domain}}report/{{slug}}"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"No reports of this type have been run\",\n    \"requested-report-type\": \"gas-compliance-report\"\n}"}],"_postman_id":"88628fb2-1a16-4361-9bdd-17e07c55882c"},{"name":"Get Latest Report Tab","id":"03b857c8-225e-4c03-85c4-e33f35dde547","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api-key}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{public_api_v2_domain}}report/{{slug}}/{{tabName}}","description":"<p>Retrieves the latest report for a specific tab within a given organisation or property, identified by its unique slug and tab name.</p>\n<h2 id=\"authentication\">Authentication</h2>\n<p>This endpoint requires a Bearer token. Pass your API key using the <code>Authorization</code> header:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>Authorization: Bearer {{api-key}}\n\n</code></pre><h2 id=\"path-variables\">Path Variables</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Variable</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>slug</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>The unique slug identifier for the organisation or property.</td>\n</tr>\n<tr>\n<td><code>tabName</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>The name of the tab within the report to retrieve.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"response\">Response</h2>\n<p>Returns the latest report object for the specified tab on success.</p>\n<h2 id=\"error-responses\">Error Responses</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status Code</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>401 Unauthorized</code></td>\n<td>Missing or invalid API key.</td>\n</tr>\n<tr>\n<td><code>404 Not Found</code></td>\n<td>No report exists for the given <code>slug</code> and <code>tabName</code> combination.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["{{slug}}","{{tabName}}"],"host":["{{public_api_v2_domain}}report"],"query":[],"variable":[]}},"response":[],"_postman_id":"03b857c8-225e-4c03-85c4-e33f35dde547"}],"id":"f7a087da-30d5-4cc1-b40b-458947e68e30","_postman_id":"f7a087da-30d5-4cc1-b40b-458947e68e30","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{public_api_v2_token}}"}]},"isInherited":true,"source":{"_postman_id":"bd46f7ec-2f39-4add-9eff-160cb4bda033","id":"bd46f7ec-2f39-4add-9eff-160cb4bda033","name":"True Compliance Public API v2","type":"collection"}}}],"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{public_api_v2_token}}"}]}},"event":[{"listen":"prerequest","script":{"type":"text/javascript","packages":{},"exec":[""],"id":"7c2d2449-6842-4bc4-b3ca-5aa711c038e7"}},{"listen":"test","script":{"type":"text/javascript","packages":{},"exec":[""],"id":"a4f6c415-e06e-4092-bb09-9bfac6784e0b"}}]}