{"info":{"_postman_id":"9240c3bf-c70a-4bdb-a696-c10df9f7448c","name":"Danrovi Developer API","description":"<html><head></head><body><h1 id=\"danrovi-provider-developer-api\">Danrovi Provider Developer API</h1>\n<p>This collection is for a provider's backend engineers. It contains only the stable, workspace API-key-protected <code>/developer/v1</code> contract, plus the two provider-hosted browser callback protocols required for <code>provider_session</code> and <code>external_interaction</code>.</p>\n<h2 id=\"start-here\">Start here</h2>\n<ol>\n<li>Set <code>baseUrl</code> to <code>https://api.danrovi.com</code>.</li>\n<li>Set <code>developerApiKey</code> to the workspace key issued to your provider integration. It must begin with <code>drv_</code>.</li>\n<li>Read the collection folder descriptions in order.</li>\n<li>Validate a manifest before creating or replacing it.</li>\n</ol>\n<p>Do not use this collection with dashboard access tokens, MCP OAuth tokens, customer tokens, Meta tokens, provider API secrets, or Danrovi admin keys. Do not include any secret in a manifest.</p>\n<p>The companion guide is <code>Danrovi-Provider-Developer-API.md</code> in the same repository folder.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[{"content":"Danrovi Provider Developer API","slug":"danrovi-provider-developer-api"}],"owner":"3577894","collectionId":"9240c3bf-c70a-4bdb-a696-c10df9f7448c","publishedId":"2sBYAvwB8U","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2026-09-04T15:23:08.000Z"},"item":[{"name":"01. Read first","item":[{"name":"Service health","id":"21480e28-b5ae-49fd-9955-1e91e3237453","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[],"url":"https://api.danrovi.com/healthz","description":"<p>Public deployment health check. A successful response is <code>{\"status\":\"ok\"}</code>. It does not validate your developer key.</p>\n","urlObject":{"path":["healthz"],"host":["https://api.danrovi.com"],"query":[],"variable":[]}},"response":[{"id":"72ff146b-9419-4826-97b9-c7200856b9f1","name":"Healthy","originalRequest":{"method":"GET","header":[],"url":"https://api.danrovi.com/healthz"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"ok\"\n}"}],"_postman_id":"21480e28-b5ae-49fd-9955-1e91e3237453"}],"id":"1a6680e8-b104-4370-b36d-56cef7e1e5ff","description":"<p>Use a workspace developer API key in the collection Authorization tab. This collection contains the supported endpoints for publishing and managing a provider integration.</p>\n","_postman_id":"1a6680e8-b104-4370-b36d-56cef7e1e5ff","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9240c3bf-c70a-4bdb-a696-c10df9f7448c","id":"9240c3bf-c70a-4bdb-a696-c10df9f7448c","name":"Danrovi Developer API","type":"collection"}}},{"name":"02. Catalog and validation","item":[{"name":"List supported industries","id":"69e52464-4935-4145-99b8-b166ce38e30a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.danrovi.com/developer/v1/catalog/industries","description":"<p>Returns Danrovi industry keys and labels. Use the returned <code>key</code> as the manifest <code>industry</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9240c3bf-c70a-4bdb-a696-c10df9f7448c","id":"9240c3bf-c70a-4bdb-a696-c10df9f7448c","name":"Danrovi Developer API","type":"collection"}},"urlObject":{"path":["developer","v1","catalog","industries"],"host":["https://api.danrovi.com"],"query":[],"variable":[]}},"response":[{"id":"e564100c-fa6c-4cd0-8340-db8390dd64b5","name":"Supported industries","originalRequest":{"method":"GET","header":[],"url":"https://api.danrovi.com/developer/v1/catalog/industries"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"id\": \"00000000-0000-0000-0000-000000000001\",\n    \"key\": \"waste_management\",\n    \"display_name\": \"Waste Management\"\n  }\n]"}],"_postman_id":"69e52464-4935-4145-99b8-b166ce38e30a"},{"name":"List standard capability names for an industry","id":"f6aae900-8908-4109-9f01-20ea7eddfeee","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.danrovi.com/developer/v1/catalog/industries/waste_management/capability-names","description":"<p>Returns standard capability names available for the selected industry. Provider-specific custom capability names are also allowed when they use lowercase letters, numbers, and single underscores.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9240c3bf-c70a-4bdb-a696-c10df9f7448c","id":"9240c3bf-c70a-4bdb-a696-c10df9f7448c","name":"Danrovi Developer API","type":"collection"}},"urlObject":{"path":["developer","v1","catalog","industries","waste_management","capability-names"],"host":["https://api.danrovi.com"],"query":[],"variable":[]}},"response":[{"id":"15eff17e-822a-4c24-b6b9-f51bf7643a35","name":"Industry capability names","originalRequest":{"method":"GET","header":[],"url":"https://api.danrovi.com/developer/v1/catalog/industries/waste_management/capability-names"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"id\": \"00000000-0000-0000-0000-000000000002\",\n    \"industry_id\": \"00000000-0000-0000-0000-000000000001\",\n    \"name\": \"request_service\",\n    \"display_name\": \"Request a service\"\n  }\n]"}],"_postman_id":"f6aae900-8908-4109-9f01-20ea7eddfeee"},{"name":"Validate manifest","id":"14f60eb2-6787-4937-a77c-5ead7d10c621","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"id\": \"example_provider\",\n  \"industry\": \"waste_management\",\n  \"display_name\": \"Example Provider\",\n  \"base_urls\": [\n    {\n      \"key\": \"customer_api\",\n      \"url\": \"https://api.example.com\",\n      \"auth_method\": \"api_key\",\n      \"custom_headers\": {\n        \"X-API-Key\": \"{{credential.api_key}}\"\n      }\n    }\n  ],\n  \"capabilities\": [\n    {\n      \"base_url_key\": \"customer_api\",\n      \"name\": \"list_orders\",\n      \"display_name\": \"View my orders\",\n      \"route\": { \"method\": \"GET\", \"path\": \"/v1/orders\" },\n      \"approval_required\": false\n    }\n  ]\n}"},"url":"https://api.danrovi.com/developer/v1/manifests/validate","description":"<p>Checks the entire manifest without saving it. Never put the actual provider API key in <code>custom_headers</code>; the <code>{{credential.api_key}}</code> token is resolved from the encrypted credential configured in the Danrovi portal.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9240c3bf-c70a-4bdb-a696-c10df9f7448c","id":"9240c3bf-c70a-4bdb-a696-c10df9f7448c","name":"Danrovi Developer API","type":"collection"}},"urlObject":{"path":["developer","v1","manifests","validate"],"host":["https://api.danrovi.com"],"query":[],"variable":[]}},"response":[{"id":"5ecd809a-11b0-460a-8a70-a677201f41bf","name":"Valid manifest","originalRequest":{"method":"POST","header":[],"url":"https://api.danrovi.com/developer/v1/manifests/validate"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\n  \"id\": \"example_provider\",\n  \"industry\": \"waste_management\",\n  \"display_name\": \"Example Provider\",\n  \"base_urls\": [\n    {\n      \"key\": \"customer_api\",\n      \"url\": \"https://api.example.com\",\n      \"auth_method\": \"api_key\",\n      \"custom_headers\": { \"X-API-Key\": \"{{credential.api_key}}\" }\n    }\n  ],\n  \"capabilities\": [\n    {\n      \"base_url_key\": \"customer_api\",\n      \"name\": \"list_orders\",\n      \"display_name\": \"View my orders\",\n      \"route\": { \"method\": \"GET\", \"path\": \"/v1/orders\" },\n      \"approval_required\": false\n    }\n  ]\n}"}],"_postman_id":"14f60eb2-6787-4937-a77c-5ead7d10c621"}],"id":"075abdd2-9171-456c-8b7f-ec1040d341c3","description":"<p>Read the catalog before declaring a manifest. Validate before every create or replacement. Validation does not persist a provider.</p>\n","_postman_id":"075abdd2-9171-456c-8b7f-ec1040d341c3","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9240c3bf-c70a-4bdb-a696-c10df9f7448c","id":"9240c3bf-c70a-4bdb-a696-c10df9f7448c","name":"Danrovi Developer API","type":"collection"}}},{"name":"03. Provider manifest lifecycle","item":[{"name":"Create provider manifest","event":[{"listen":"test","script":{"type":"text/javascript","exec":["if (pm.response.code === 201) {","  pm.collectionVariables.set('providerKey', pm.response.json().id);","}"],"id":"7d6a0513-8717-4da2-9d45-c79ed788d86d"}}],"id":"f56d8359-574c-4db6-8929-b90bb90462a7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"id\": \"example_provider\",\n  \"industry\": \"waste_management\",\n  \"display_name\": \"Example Provider\",\n  \"base_urls\": [\n    {\n      \"key\": \"customer_api\",\n      \"url\": \"https://api.example.com\",\n      \"auth_method\": \"api_key\",\n      \"custom_headers\": { \"X-API-Key\": \"{{credential.api_key}}\" }\n    }\n  ],\n  \"capabilities\": [\n    {\n      \"base_url_key\": \"customer_api\",\n      \"name\": \"list_orders\",\n      \"display_name\": \"View my orders\",\n      \"route\": { \"method\": \"GET\", \"path\": \"/v1/orders\" },\n      \"approval_required\": false\n    }\n  ]\n}"},"url":"https://api.danrovi.com/developer/v1/providers","description":"<p>Creates a provider in the workspace. A duplicate key returns <code>409</code>. Complete Danrovi business activation and subscription prerequisites before creating production providers.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9240c3bf-c70a-4bdb-a696-c10df9f7448c","id":"9240c3bf-c70a-4bdb-a696-c10df9f7448c","name":"Danrovi Developer API","type":"collection"}},"urlObject":{"path":["developer","v1","providers"],"host":["https://api.danrovi.com"],"query":[],"variable":[]}},"response":[{"id":"d06bdfea-2f1b-4932-828c-738c1b375c0d","name":"Provider created","originalRequest":{"method":"POST","header":[],"url":"https://api.danrovi.com/developer/v1/providers"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\n  \"id\": \"example_provider\",\n  \"industry\": \"waste_management\",\n  \"display_name\": \"Example Provider\",\n  \"base_urls\": [{ \"key\": \"customer_api\", \"url\": \"https://api.example.com\", \"auth_method\": \"api_key\", \"custom_headers\": { \"X-API-Key\": \"{{credential.api_key}}\" } }],\n  \"capabilities\": [{ \"base_url_key\": \"customer_api\", \"name\": \"list_orders\", \"display_name\": \"View my orders\", \"route\": { \"method\": \"GET\", \"path\": \"/v1/orders\" }, \"approval_required\": false }]\n}"}],"_postman_id":"f56d8359-574c-4db6-8929-b90bb90462a7"},{"name":"List workspace providers","id":"85a37c97-c548-41a7-a9ff-f2e3f4a88c80","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.danrovi.com/developer/v1/providers","description":"<p>Lists only providers owned by the workspace represented by your developer API key.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9240c3bf-c70a-4bdb-a696-c10df9f7448c","id":"9240c3bf-c70a-4bdb-a696-c10df9f7448c","name":"Danrovi Developer API","type":"collection"}},"urlObject":{"path":["developer","v1","providers"],"host":["https://api.danrovi.com"],"query":[],"variable":[]}},"response":[{"id":"1d17662e-d78a-4b81-82dd-00af2268a3dc","name":"Workspace providers","originalRequest":{"method":"GET","header":[],"url":"https://api.danrovi.com/developer/v1/providers"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"id\": \"example_provider\",\n    \"industry\": \"waste_management\",\n    \"display_name\": \"Example Provider\",\n    \"base_urls\": [{ \"key\": \"customer_api\", \"url\": \"https://api.example.com\", \"auth_method\": \"api_key\" }],\n    \"capabilities\": [{ \"base_url_key\": \"customer_api\", \"name\": \"list_orders\", \"display_name\": \"View my orders\", \"route\": { \"method\": \"GET\", \"path\": \"/v1/orders\" }, \"approval_required\": false }]\n  }\n]"}],"_postman_id":"85a37c97-c548-41a7-a9ff-f2e3f4a88c80"},{"name":"Get provider manifest","id":"1017f2d6-b0b6-4400-abff-383b1f77c8a4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.danrovi.com/developer/v1/providers/example_provider","description":"<p>Use this before a replacement if your deployment does not retain the current manifest source.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9240c3bf-c70a-4bdb-a696-c10df9f7448c","id":"9240c3bf-c70a-4bdb-a696-c10df9f7448c","name":"Danrovi Developer API","type":"collection"}},"urlObject":{"path":["developer","v1","providers","example_provider"],"host":["https://api.danrovi.com"],"query":[],"variable":[]}},"response":[{"id":"080cd6ea-4e0b-4214-b0ac-cdde07d9e491","name":"Provider manifest","originalRequest":{"method":"GET","header":[],"url":"https://api.danrovi.com/developer/v1/providers/example_provider"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\n  \"id\": \"example_provider\",\n  \"industry\": \"waste_management\",\n  \"display_name\": \"Example Provider\",\n  \"base_urls\": [{ \"key\": \"customer_api\", \"url\": \"https://api.example.com\", \"auth_method\": \"api_key\" }],\n  \"capabilities\": [{ \"base_url_key\": \"customer_api\", \"name\": \"list_orders\", \"display_name\": \"View my orders\", \"route\": { \"method\": \"GET\", \"path\": \"/v1/orders\" }, \"approval_required\": false }]\n}"}],"_postman_id":"1017f2d6-b0b6-4400-abff-383b1f77c8a4"},{"name":"Replace provider manifest","id":"63d09fdf-d16d-4f85-8cdb-21d8b9277b67","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"id\": \"example_provider\",\n  \"industry\": \"waste_management\",\n  \"display_name\": \"Example Provider\",\n  \"base_urls\": [\n    {\n      \"key\": \"customer_api\",\n      \"url\": \"https://api.example.com\",\n      \"auth_method\": \"api_key\",\n      \"custom_headers\": { \"X-API-Key\": \"{{credential.api_key}}\" }\n    }\n  ],\n  \"capabilities\": [\n    {\n      \"base_url_key\": \"customer_api\",\n      \"name\": \"list_orders\",\n      \"display_name\": \"View my orders\",\n      \"route\": { \"method\": \"GET\", \"path\": \"/v1/orders\" },\n      \"approval_required\": false\n    }\n  ]\n}"},"url":"https://api.danrovi.com/developer/v1/providers/example_provider","description":"<p>Replaces the whole manifest and creates a new revision. Validate the exact body first. This is not a partial patch.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9240c3bf-c70a-4bdb-a696-c10df9f7448c","id":"9240c3bf-c70a-4bdb-a696-c10df9f7448c","name":"Danrovi Developer API","type":"collection"}},"urlObject":{"path":["developer","v1","providers","example_provider"],"host":["https://api.danrovi.com"],"query":[],"variable":[]}},"response":[{"id":"d0114469-9fa3-48dc-a740-974725690856","name":"Provider replaced","originalRequest":{"method":"PUT","header":[],"url":"https://api.danrovi.com/developer/v1/providers/example_provider"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\n  \"id\": \"example_provider\",\n  \"industry\": \"waste_management\",\n  \"display_name\": \"Example Provider\",\n  \"base_urls\": [{ \"key\": \"customer_api\", \"url\": \"https://api.example.com\", \"auth_method\": \"api_key\" }],\n  \"capabilities\": [{ \"base_url_key\": \"customer_api\", \"name\": \"list_orders\", \"display_name\": \"View my orders\", \"route\": { \"method\": \"GET\", \"path\": \"/v1/orders\" }, \"approval_required\": false }]\n}"}],"_postman_id":"63d09fdf-d16d-4f85-8cdb-21d8b9277b67"},{"name":"List manifest revisions","id":"4fe79dfd-36c4-422e-b8f6-1f1db41864f8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.danrovi.com/developer/v1/providers/example_provider/revisions","description":"<p>Lists accepted manifest revision numbers and creation times for audit and release tracking.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9240c3bf-c70a-4bdb-a696-c10df9f7448c","id":"9240c3bf-c70a-4bdb-a696-c10df9f7448c","name":"Danrovi Developer API","type":"collection"}},"urlObject":{"path":["developer","v1","providers","example_provider","revisions"],"host":["https://api.danrovi.com"],"query":[],"variable":[]}},"response":[{"id":"e2e3b227-54c9-41e4-8557-c01ca3c29a06","name":"Manifest revisions","originalRequest":{"method":"GET","header":[],"url":"https://api.danrovi.com/developer/v1/providers/example_provider/revisions"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"[\n  { \"version\": 2, \"created_at\": \"2026-09-04T12:00:00Z\" },\n  { \"version\": 1, \"created_at\": \"2026-09-03T10:30:00Z\" }\n]"}],"_postman_id":"4fe79dfd-36c4-422e-b8f6-1f1db41864f8"},{"name":"Delete provider manifest","id":"d0e89908-0da6-4cec-9d6e-60417d173c16","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"https://api.danrovi.com/developer/v1/providers/example_provider","description":"<p>Dangerous. Removes this provider configuration from the workspace and returns <code>204 No Content</code>. Do not run this request in normal testing.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9240c3bf-c70a-4bdb-a696-c10df9f7448c","id":"9240c3bf-c70a-4bdb-a696-c10df9f7448c","name":"Danrovi Developer API","type":"collection"}},"urlObject":{"path":["developer","v1","providers","example_provider"],"host":["https://api.danrovi.com"],"query":[],"variable":[]}},"response":[{"id":"d0316036-e2cb-4423-aeb6-fff595eb16ec","name":"Provider deleted","originalRequest":{"method":"DELETE","header":[],"url":"https://api.danrovi.com/developer/v1/providers/example_provider"},"status":"No Content","code":204,"_postman_previewlanguage":"Text","header":[],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"d0e89908-0da6-4cec-9d6e-60417d173c16"}],"id":"34447669-386f-47f4-a87f-2e6718def578","description":"<p>A manifest is the complete provider contract. Create uses the key once. Replace requires the full new manifest and preserves a revision. Delete is irreversible for the provider configuration and immediately removes it from discovery.</p>\n","_postman_id":"34447669-386f-47f4-a87f-2e6718def578","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9240c3bf-c70a-4bdb-a696-c10df9f7448c","id":"9240c3bf-c70a-4bdb-a696-c10df9f7448c","name":"Danrovi Developer API","type":"collection"}}},{"name":"04. Channel publication","item":[{"name":"Get provider channel status","id":"4442c5a4-fe17-4430-ac08-3d2975f5ab1f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.danrovi.com/developer/v1/providers/example_provider/channels","description":"<p>Returns <code>{ provider_key, mcp_enabled, whatsapp_enabled }</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9240c3bf-c70a-4bdb-a696-c10df9f7448c","id":"9240c3bf-c70a-4bdb-a696-c10df9f7448c","name":"Danrovi Developer API","type":"collection"}},"urlObject":{"path":["developer","v1","providers","example_provider","channels"],"host":["https://api.danrovi.com"],"query":[],"variable":[]}},"response":[{"id":"9da54482-5040-423c-b564-32e0e784799e","name":"Channel status","originalRequest":{"method":"GET","header":[],"url":"https://api.danrovi.com/developer/v1/providers/example_provider/channels"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\n  \"provider_key\": \"example_provider\",\n  \"mcp_enabled\": true,\n  \"whatsapp_enabled\": false\n}"}],"_postman_id":"4442c5a4-fe17-4430-ac08-3d2975f5ab1f"},{"name":"Enable or disable MCP","id":"65e4ac30-60e5-4d81-9740-dc37c14ef63d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"enabled\": true\n}"},"url":"https://api.danrovi.com/developer/v1/providers/example_provider/channels/mcp","description":"<p>Set <code>enabled</code> to false to withdraw immediately from MCP discovery. A non-verified business receives <code>403</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9240c3bf-c70a-4bdb-a696-c10df9f7448c","id":"9240c3bf-c70a-4bdb-a696-c10df9f7448c","name":"Danrovi Developer API","type":"collection"}},"urlObject":{"path":["developer","v1","providers","example_provider","channels","mcp"],"host":["https://api.danrovi.com"],"query":[],"variable":[]}},"response":[{"id":"421a16dc-5396-4f99-8b74-282978e9666b","name":"MCP enabled","originalRequest":{"method":"PATCH","header":[],"url":"https://api.danrovi.com/developer/v1/providers/example_provider/channels/mcp"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\n  \"provider_key\": \"example_provider\",\n  \"mcp_enabled\": true\n}"}],"_postman_id":"65e4ac30-60e5-4d81-9740-dc37c14ef63d"},{"name":"Enable or disable WhatsApp","id":"94739273-18c2-484d-9b10-535a47c2a463","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"enabled\": true\n}"},"url":"https://api.danrovi.com/developer/v1/providers/example_provider/channels/whatsapp","description":"<p>Set <code>enabled</code> to false to remove the provider from Danrovi's WhatsApp Business channel. The provider must remain MCP-enabled, verified, and on an eligible paid plan.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9240c3bf-c70a-4bdb-a696-c10df9f7448c","id":"9240c3bf-c70a-4bdb-a696-c10df9f7448c","name":"Danrovi Developer API","type":"collection"}},"urlObject":{"path":["developer","v1","providers","example_provider","channels","whatsapp"],"host":["https://api.danrovi.com"],"query":[],"variable":[]}},"response":[{"id":"bcd8a8c6-695e-431c-bc1f-82909e42f08f","name":"WhatsApp enabled","originalRequest":{"method":"PATCH","header":[],"url":"https://api.danrovi.com/developer/v1/providers/example_provider/channels/whatsapp"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\n  \"provider_key\": \"example_provider\",\n  \"whatsapp_enabled\": true\n}"}],"_postman_id":"94739273-18c2-484d-9b10-535a47c2a463"}],"id":"a0a68b52-edc8-4f49-be0d-684b9576ae01","description":"<p>Provider publication is explicit. MCP requires a verified Danrovi business. WhatsApp additionally requires an active Starter, Growth, or Enterprise subscription and an MCP-enabled provider. Disabling one channel does not delete the manifest or credentials.</p>\n","_postman_id":"a0a68b52-edc8-4f49-be0d-684b9576ae01","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9240c3bf-c70a-4bdb-a696-c10df9f7448c","id":"9240c3bf-c70a-4bdb-a696-c10df9f7448c","name":"Danrovi Developer API","type":"collection"}}},{"name":"05. Provider-hosted browser callbacks","item":[{"name":"Complete a provider session","id":"087ab8c7-d51e-45c2-9db3-e401fd00fa24","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/x-www-form-urlencoded"}],"body":{"mode":"urlencoded","urlencoded":[{"key":"state","value":"","type":"text"},{"key":"token","value":"","type":"text"}]},"url":"https://api.danrovi.com/provider-connections/provider-session/complete","description":"<p>Provider frontend callback for manifests using <code>auth_method: provider_session</code>. Read <code>danrovi_state</code> from the provider login URL and submit it after the customer's normal login, registration, and verification flow has produced a provider session token. Danrovi validates the token against the manifest validation URL, then redirects the browser.</p>\n","urlObject":{"path":["provider-connections","provider-session","complete"],"host":["https://api.danrovi.com"],"query":[],"variable":[]}},"response":[{"id":"0b2220c0-a362-4308-b501-a7967db988ca","name":"Provider session completed","originalRequest":{"method":"POST","header":[],"url":"https://api.danrovi.com/provider-connections/provider-session/complete"},"status":"See Other","code":303,"_postman_previewlanguage":"Text","header":[{"key":"Location","value":"https://app.danrovi.com/provider-session/complete?status=success"}],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"087ab8c7-d51e-45c2-9db3-e401fd00fa24"},{"name":"Complete a provider-hosted approval","event":[{"listen":"prerequest","script":{"type":"text/javascript","exec":["const raw = pm.collectionVariables.get('interactionResultJson');","const secret = pm.collectionVariables.get('interactionSecret');","if (!raw || !secret) { throw new Error('Set interactionResultJson and interactionSecret from the Danrovi action headers.'); }","const bytes = CryptoJS.enc.Utf8.parse(raw);","const encoded = CryptoJS.enc.Base64.stringify(bytes).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');","const signature = 'sha256=' + CryptoJS.HmacSHA256(bytes, secret).toString(CryptoJS.enc.Hex);","pm.collectionVariables.set('interactionResult', encoded);","pm.collectionVariables.set('interactionSignature', signature);"],"id":"6fa2ee7f-4ff8-417d-b1fb-c1e06f96f762"}}],"id":"255b3ac8-6cee-4a0e-827a-37e09b55ac56","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[],"url":"https://api.danrovi.com/provider-actions//complete?result=&signature=","description":"<p>Use the exact <code>X-Danrovi-Interaction-Complete-URL</code> and one-time <code>X-Danrovi-Interaction-Secret</code> that Danrovi sent while invoking a capability with <code>external_interaction</code>. The pre-request script base64url encodes the result JSON and creates <code>sha256=&lt;HMAC-SHA256(secret, raw JSON)&gt;</code>. Valid statuses are <code>completed</code>, <code>failed</code>, and <code>cancelled</code>. The link expires after ten minutes and can be used once.</p>\n","urlObject":{"path":["provider-actions","","complete"],"host":["https://api.danrovi.com"],"query":[{"key":"result","value":""},{"key":"signature","value":""}],"variable":[]}},"response":[{"id":"3f31644b-856c-4331-91fc-edf1414b5c46","name":"Interaction completed","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.danrovi.com/provider-actions//complete?result=&signature=","host":["https://api.danrovi.com"],"path":["provider-actions","","complete"],"query":[{"key":"result","value":""},{"key":"signature","value":""}]}},"status":"OK","code":200,"_postman_previewlanguage":"html","header":[],"cookie":[],"responseTime":null,"body":"<!doctype html><html><body><h1>Action completed</h1><p>Return to your chat client to view the action result.</p></body></html>"}],"_postman_id":"255b3ac8-6cee-4a0e-827a-37e09b55ac56"}],"id":"b1033a82-b21d-452c-be75-c7759a6d3ede","description":"<p>These are public callback protocols used only after Danrovi starts a customer-specific authorization or external interaction. They do not use your workspace developer API key. Do not call them with invented values in production.</p>\n","_postman_id":"b1033a82-b21d-452c-be75-c7759a6d3ede","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"9240c3bf-c70a-4bdb-a696-c10df9f7448c","id":"9240c3bf-c70a-4bdb-a696-c10df9f7448c","name":"Danrovi Developer API","type":"collection"}}}],"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]}},"variable":[{"key":"baseUrl","value":"https://api.danrovi.com"},{"key":"developerApiKey","value":""},{"key":"providerKey","value":"example_provider"},{"key":"baseUrlKey","value":"customer_api"},{"key":"industryKey","value":"waste_management"},{"key":"providerSessionState","value":""},{"key":"providerSessionToken","value":""},{"key":"externalActionId","value":""},{"key":"interactionSecret","value":""},{"key":"interactionResultJson","value":"{\"status\":\"completed\",\"provider_status_code\":200,\"provider_reference\":\"EXAMPLE-123\",\"response\":{\"message\":\"Completed by provider\"}}"},{"key":"interactionResult","value":""},{"key":"interactionSignature","value":""}]}